ubuntu14.04的HADOOP安裝,詳細
當開始著手實踐 Hadoop 時,安裝 Hadoop 往往會成為新手的一道門檻。儘管安裝其實很簡單,書上有寫到,官方網站也有 Hadoop 安裝配置教程,但由於對 Linux 環境不熟悉,書上跟官網上簡略的安裝步驟新手往往 Hold 不住。加上網上不少教程也甚是坑,導致新手摺騰老幾天愣是沒裝好,很是打擊學習熱情。
本教程適合於原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要參考了官方安裝教程,步驟詳細,輔以適當說明,相信按照步驟來,都能順利安裝並執行Hadoop。另外有Hadoop安裝配置簡略版方便有基礎的讀者快速完成安裝。此外,希望讀者們能多去了解一些
Linux 的知識,以後出現問題時才能自行解決。本教程由
環境
本教程使用 Ubuntu 14.04 64位 作為系統環境(Ubuntu 12.04 也行,32位、64位均可),請自行安裝系統(可參考使用VirtualBox安裝Ubuntu)。
本教程基於原生 Hadoop 2,在 Hadoop 2.6.0 (stable) 版本下驗證通過,可適合任何 Hadoop 2.x.y 版本,例如 Hadoop 2.4.1。
Hadoop版本Hadoop 有兩個主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比較老的教材上用的可能是 0.20 這樣的版本。Hadoop 2.x 版本在不斷更新,本教程均可適用。如果需安裝 0.20,1.2.1這樣的版本,本教程也可以作為參考,主要差別在於配置項,配置請參考官網教程或其他教程。
新版是相容舊版的,書上舊版本的程式碼應該能夠正常執行(我自己沒驗證,歡迎驗證反饋)。
裝好了 Ubuntu 系統之後,在安裝 Hadoop 前還需要做一些必備工作。
建立hadoop使用者
如果你安裝 Ubuntu 的時候不是用的 “hadoop” 使用者,那麼需要增加一個名為 hadoop 的使用者。
首先按 ctrl+alt+t 開啟終端視窗,輸入如下命令建立新使用者 :
- sudo useradd -m hadoop -s /bin/bash
這條命令建立了可以登陸的 hadoop 使用者,並使用 /bin/bash 作為 shell。
Ubuntu終端複製貼上快捷鍵在Ubuntu終端視窗中,複製貼上的快捷鍵需要加上 shift,即貼上是 ctrl+shift+v。
接著使用如下命令設定密碼,可簡單設定為 hadoop,按提示輸入兩次密碼:
- sudo passwd hadoop
可為 hadoop 使用者增加管理員許可權,方便部署,避免一些對新手來說比較棘手的許可權問題:
- sudo adduser hadoop sudo
最後登出當前使用者(點選螢幕右上角的齒輪,選擇登出),在登陸介面使用剛建立的 hadoop 使用者進行登陸。
更新apt
用 hadoop 使用者登入後,我們先更新一下 apt,後續我們使用 apt 安裝軟體,如果沒更新可能有一些軟體安裝不了。按 ctrl+alt+t 開啟終端視窗,執行如下命令:
- sudo apt-get update
若出現如下 “Hash校驗和不符” 的提示,可通過更改軟體源來解決。若沒有該問題,則不需要更改。
點選檢視:如何更改軟體源
後續需要更改一些配置檔案,我比較喜歡用的是 vim(vi增強版,基本用法相同),建議安裝一下(如果你實在還不會用 vi/vim 的,請將後面用到 vim 的地方改為 gedit,這樣可以使用文字編輯器進行修改,並且每次檔案更改完成後請關閉整個 gedit 程式,否則會佔用終端):
- sudo apt-get install vim
安裝軟體時若需要確認,在提示處輸入 y 即可。
安裝SSH、配置SSH無密碼登陸
叢集、單節點模式都需要用到 SSH 登陸(類似於遠端登陸,你可以登入某臺 Linux 主機,並且在上面執行命令),Ubuntu 預設已安裝了 SSH client,此外還需要安裝 SSH server:
- sudo apt-get install openssh-server
安裝後,可以使用如下命令登陸本機:
- ssh localhost
此時會有如下提示(SSH首次登陸提示),輸入 yes 。然後按提示輸入密碼 hadoop,這樣就登陸到本機了。
但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
首先退出剛才的 ssh,就回到了我們原先的終端視窗,然後利用 ssh-keygen 生成金鑰,並將金鑰加入到授權中:
- exit # 退出剛才的 ssh localhost
- cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
- ssh-keygen -t rsa # 會有提示,都按回車就可以
- cat ./id_rsa.pub >> ./authorized_keys # 加入授權
在 Linux 系統中,~ 代表的是使用者的主資料夾,即 “/home/使用者名稱” 這個目錄,如你的使用者名稱為 hadoop,則 ~ 就代表 “/home/hadoop/”。 此外,命令中的 # 後面的文字是註釋。
此時再用 ssh localhost
命令,無需輸入密碼就可以直接登陸了,如下圖所示。
安裝Java環境
Java環境可選擇 Oracle 的 JDK,或是 OpenJDK,按http://wiki.apache.org/hadoop/HadoopJavaVersions中說的,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。
- sudo apt-get install openjdk-7-jre openjdk-7-jdk
JRE(Java Runtime Environment,Java執行環境),是執行 Java 所需的環境。JDK(Java Development Kit,Java軟體開發工具包)即包括 JRE,還包括開發 Java 程式所需的工具和類庫。
安裝好 OpenJDK 後,需要找到相應的安裝路徑,這個路徑是用於配置 JAVA_HOME 環境變數的。執行如下命令:
- dpkg -L openjdk-7-jdk | grep '/bin/javac'
該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是正確的路徑了。如輸出路徑為 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,則我們需要的路徑為 /usr/lib/jvm/java-7-openjdk-amd64。
接著配置 JAVA_HOME 環境變數,為方便,我們在 ~/.bashrc 中進行設定(擴充套件閱讀: 設定Linux環境變數的方法和區別):
- vim ~/.bashrc
在檔案最前面新增如下單獨一行(注意 = 號前後不能有空格),將“JDK安裝路徑”改為上述命令得到的路徑,並儲存:
- export JAVA_HOME=JDK安裝路徑
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
在/usr/local/hadoop/etc/hadoop/hadoop-env.sh新增
- export JAVA_HOME=JDK安裝路徑
Shell
如下圖所示(該檔案原本可能不存在,內容為空,這不影響):
接著還需要讓該環境變數生效,執行如下程式碼:
- source ~/.bashrc # 使變數設定生效
設定好後我們來檢驗一下是否設定正確:
- echo $JAVA_HOME # 檢驗變數值
- java -version
- $JAVA_HOME/bin/java -version # 與直接執行 java -version 一樣
如果設定正確的話,$JAVA_HOME/bin/java -version
會輸出 java 的版本資訊,且和 java -version
的輸出結果一樣,如下圖所示:
這樣,Hadoop 所需的 Java 執行環境就安裝好了。
安裝 Hadoop 2
下載時強烈建議也下載 hadoop-2.x.y.tar.gz.mds 這個檔案,該檔案包含了檢驗值可用於檢查 hadoop-2.x.y.tar.gz 的完整性,否則若檔案發生了損壞或下載不完整,Hadoop 將無法正常執行。
本文涉及的檔案均通過瀏覽器下載,預設儲存在 “下載” 目錄中(若不是請自行更改 tar 命令的相應目錄)。另外,本教程選擇的是 2.6.0 版本,如果你用的不是 2.6.0 版本,則將所有命令中出現的 2.6.0 更改為你所使用的版本。
- cat ~/下載/hadoop-2.6.0.tar.gz.mds | grep 'MD5'# 列出md5檢驗值
- # head -n 6 ~/下載/hadoop-2.7.1.tar.gz.mds # 2.7.1版本格式變了,可以用這種方式輸出
- md5sum ~/下載/hadoop-2.6.0.tar.gz | tr "a-z""A-Z"# 計算md5值,並轉化為大寫,方便比較
若檔案不完整則這兩個值一般差別很大,可以簡單對比下前幾個字元跟後幾個字元是否相等即可,如下圖所示,如果兩個值不一樣,請務必重新下載。
我們選擇將 Hadoop 安裝至 /usr/local/ 中:
- sudo tar -zxf ~/下載/hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中
- cd /usr/local/
- sudo mv ./hadoop-2.6.0/ ./hadoop # 將資料夾名改為hadoop
- sudo chown -R hadoop ./hadoop # 修改檔案許可權
Hadoop 解壓後即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本資訊:
- cd /usr/local/hadoop
- ./bin/hadoop version
請務必注意命令中的相對路徑與絕對路徑,本文後續出現的 ./bin/...
,./etc/...
等包含 ./ 的路徑,均為相對路徑,以 /usr/local/hadoop 為當前目錄。例如在 /usr/local/hadoop 目錄中執行./bin/hadoop version
等同於執行/usr/local/hadoop/bin/hadoop version
。可以將相對路徑改成絕對路徑來執行,但如果你是在主資料夾
~ 中執行./bin/hadoop version
,執行的會是/home/hadoop/bin/hadoop version
,就不是我們所想要的了。
Hadoop單機配置(非分散式)
Hadoop 預設模式為非分散式模式,無需進行其他配置即可執行。非分散式即單 Java 程序,方便進行除錯。
現在我們可以執行例子來感受下 Hadoop 的執行。Hadoop 附帶了豐富的例子(執行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar
可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我們選擇執行 grep 例子,我們將 input 資料夾中的所有檔案作為輸入,篩選當中符合正則表示式 dfs[a-z.]+ 的單詞並統計出現的次數,最後輸出結果到 output 資料夾中。
- cd /usr/local/hadoop
- mkdir ./input
- cp ./etc/hadoop/*.xml ./input # 將配置檔案作為輸入檔案
- ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
- cat ./output/* # 檢視執行結果
執行成功後如下所示,輸出了作業的相關資訊,輸出的結果是符合正則的單詞 dfsadmin 出現了1次
注意,Hadoop 預設不會覆蓋結果檔案,因此再次執行上面例項會提示出錯,需要先將 ./output
刪除。
- rm -r ./output
Hadoop偽分散式配置
Hadoop 可以在單節點上以偽分散式的方式執行,Hadoop 程序以分離的 Java 程序來執行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的檔案。
Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xml 和hdfs-site.xml 。Hadoop的配置檔案是 xml 格式,每個配置以宣告 property 的 name 和 value 的方式來實現。
修改配置檔案 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml
),將當中的
- <configuration>
- </configuration>
修改為下面配置:
- <configuration>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/local/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
同樣的,修改配置檔案 hdfs-site.xml:
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/usr/local/hadoop/tmp/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/usr/local/hadoop/tmp/dfs/data</value>
- </property>
- </configuration>
Hadoop 的執行方式是由配置檔案決定的(執行 Hadoop 時會讀取配置檔案),因此如果需要從偽分散式模式切換回非分散式模式,需要刪除 core-site.xml 中的配置項。
此外,偽分散式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以執行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 引數,則預設使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設定,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。
配置完成後,執行 NameNode 的格式化:
- ./bin/hdfs namenode -format
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。
如果在這一步時提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則說明之前設定 JAVA_HOME 環境變數那邊就沒設定好,請按教程先設定好 JAVA_HOME 變數,否則後面的過程都是進行不下去的。
接著開啟 NameNode 和 DataNode 守護程序。
- ./sbin/start-dfs.sh
若出現如下SSH提示,輸入yes即可。
啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。該 WARN 提示可以忽略,並不會影響正常使用(該 WARN 可以通過編譯 Hadoop 原始碼解決)。
啟動 Hadoop 時提示 Could not resolve hostname如果啟動 Hadoop 時遇到輸出非常多“ssh: Could not resolve hostname xxx”的異常情況,如下圖所示:
這個並不是 ssh 的問題,可通過設定 Hadoop 環境變數來解決。首先按鍵盤的 ctrl + c 中斷啟動,然後在 ~/.bashrc 中,增加如下兩行內容(設定過程與 JAVA_HOME 變數一樣,其中 HADOOP_HOME 為 Hadoop 的安裝目錄):
- export HADOOP_HOME=/usr/local/hadoop
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
儲存後,務必執行 source ~/.bashrc
使變數設定生效,然後再次執行 ./sbin/start-dfs.sh
啟動 Hadoop。
啟動完成後,可以通過命令 jps
來判斷是否成功啟動,若成功啟動則會列出如下程序: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 沒有啟動,請執行 sbin/stop-dfs.sh 關閉程序,然後再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查之前步驟,或通過檢視啟動日誌排查原因。
Hadoop無法正常啟動的解決方法
一般可以檢視啟動日誌來排查原因,注意幾點:
- 啟動時會提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 對應你的機器名,但其實啟動日誌資訊是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以應該檢視這個字尾為.log 的檔案;
- 每一次的啟動日誌都是追加在日誌檔案之後,所以得拉到最後面看,對比下記錄的時間就知道了。
- 一般出錯的提示在最後面,通常是寫著 Fatal、Error、Warning 或者 Java Exception 的地方。
- 可以在網上搜索一下出錯資訊,看能否找到一些相關的解決方法。
此外,若是 DataNode 沒有啟動,可嘗試如下的方法(注意這會刪除 HDFS 中原有的所有資料,如果原有的資料很重要請不要這樣做):
- # 針對 DataNode 沒法啟動的解決方法
- ./sbin/stop-dfs.sh # 關閉
- rm -r ./tmp # 刪除 tmp 檔案,注意這會刪除 HDFS 中原有的所有資料
- ./bin/hdfs namenode -format # 重新格式化 NameNode
- ./sbin/start-dfs.sh # 重啟
成功啟動後,可以訪問 Web 介面 http://localhost:50070 檢視 NameNode 和 Datanode 資訊,還可以線上檢視 HDFS 中的檔案。
執行Hadoop偽分散式例項
上面的單機模式,grep 例子讀取的是本地資料,偽分散式讀取的則是 HDFS 上的資料。要使用 HDFS,首先需要在 HDFS 中建立使用者目錄:
- ./bin/hdfs dfs -mkdir -p /user/hadoop
接著將 ./etc/hadoop 中的 xml 檔案作為輸入檔案複製到分散式檔案系統中,即將 /usr/local/hadoop/etc/hadoop 複製到分散式檔案系統中的 /user/hadoop/input 中。我們使用的是 hadoop 使用者,並且已建立相應的使用者目錄 /user/hadoop ,因此在命令中就可以使用相對路徑如 input,其對應的絕對路徑就是 /user/hadoop/input:
- ./bin/hdfs dfs -mkdir input
- ./bin/hdfs dfs -put ./etc/hadoop/*.xml input
複製完成後,可以通過如下命令檢視檔案列表:
- ./bin/hdfs dfs -ls input
偽分散式執行 MapReduce 作業的方式跟單機模式相同,區別在於偽分散式讀取的是HDFS中的檔案(可以將單機步驟中建立的本地 input 資料夾,輸出結果 output 資料夾都刪掉來驗證這一點)。
- ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
檢視執行結果的命令(檢視的是位於 HDFS 中的輸出結果):
- ./bin/hdfs dfs -cat output/*
結果如下,注意到剛才我們已經更改了配置檔案,所以執行結果不同。
我們也可以將執行結果取回到本地:
- rm -r ./output # 先刪除本地的 output 資料夾(如果存在)
- ./bin/hdfs dfs -get output ./output # 將 HDFS 上的 output 資料夾拷貝到本機
- cat ./output/*
Hadoop 執行程式時,輸出目錄不能存在,否則會提示錯誤 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次執行,需要執行如下命令刪除 output 資料夾:
- ./bin/hdfs dfs -rm -r output # 刪除 output 資料夾
執行 Hadoop 程式時,為了防止覆蓋結果,程式指定的輸出目錄(如 output)不能存在,否則會提示錯誤,因此執行前需要先刪除輸出目錄。在實際開發應用程式時,可考慮在程式中加上如下程式碼,能在每次執行時自動刪除輸出目錄,避免繁瑣的命令列操作:
- Configuration conf =newConfiguration();
- Job job =newJob(conf);
- /* 刪除輸出目錄 */
- Path outputPath =newPath(args[1]);
- outputPath.getFileSystem(conf).delete(outputPath,true);
若要關閉 Hadoop,則執行
- ./sbin/stop-dfs.sh
下次啟動 hadoop 時,無需進行 NameNode 的初始化,只需要執行 ./sbin/start-dfs.sh
就可以!
啟動YARN
(偽分散式不啟動 YARN 也可以,一般不會影響程式執行)
有的讀者可能會疑惑,怎麼啟動 Hadoop 後,見不到書上所說的 JobTracker 和 TaskTracker,這是因為新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也稱為 YARN,Yet Another Resource Negotiator)。
YARN 是從 MapReduce 中分離出來的,負責資源管理與任務排程。YARN 運行於 MapReduce 之上,提供了高可用性、高擴充套件性,YARN 的更多介紹在此不展開,有興趣的可查閱相關資料。
上述通過 ./sbin/start-dfs.sh
啟動 Hadoop,僅僅是啟動了 MapReduce 環境,我們可以啟動 YARN ,讓 YARN 來負責資源管理與任務排程。
首先修改配置檔案 mapred-site.xml,這邊需要先進行重新命名:
- mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
然後再進行編輯,同樣使用 gedit 編輯會比較方便些 gedit ./etc/hadoop/mapred-site.xml
:
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
接著修改配置檔案 yarn-site.xml:
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
然後就可以啟動 YARN 了(需要先執行過 ./sbin/start-dfs.sh
):
- ./sbin/start-yarn.sh # 啟動YARN
- ./sbin/mr-jobhistory-daemon.sh start historyserver # 開啟歷史伺服器,才能在Web中檢視任務執行情況
開啟後通過 jps
檢視,可以看到多了 NodeManager 和 ResourceManager 兩個後臺程序,如下圖所示。
啟動 YARN 之後,執行例項的方法還是一樣的,僅僅是資源管理方式、任務排程不同。觀察日誌資訊可以發現,不啟用 YARN 時,是 “mapred.LocalJobRunner” 在跑任務,啟用 YARN 之後,是 “mapred.YARNRunner” 在跑任務。啟動 YARN 有個好處是可以通過 Web 介面檢視任務的執行情況:http://localhost:8088/cluster,如下圖所示。
但 YARN 主要是為叢集提供更好的資源管理與任務排程,然而這在單機上體現不出價值,反而會使程式跑得稍慢些。因此在單機上是否開啟 YARN 就看實際情況了。
不啟動 YARN 需重新命名 mapred-site.xml如果不想啟動 YARN,務必把配置檔案 mapred-site.xml 重新命名,改成 mapred-site.xml.template,需要用時改回來就行。否則在該配置檔案存在,而未開啟 YARN 的情況下,執行程式會提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的錯誤,這也是為何該配置檔案初始檔名為 mapred-site.xml.template。
同樣的,關閉 YARN 的指令碼如下:
- ./sbin/stop-yarn.sh
- ./sbin/mr-jobhistory-daemon.sh stop historyserver
自此,你已經掌握 Hadoop 的配置和基本使用了。
附加教程: 配置PATH環境變數
在這裡額外講一下 PATH 這個環境變數(可執行 echo $PATH
檢視,當中包含了多個目錄)。例如我們在主資料夾 ~ 中執行ls
這個命令時,實際執行的是/bin/ls
這個程式,而不是
~/ls
這個程式。系統是根據 PATH 這個環境變數中包含的目錄位置,逐一進行查詢,直至在這些目錄位置下找到匹配的程式(若沒有匹配的則提示該命令不存在)。
上面的教程中,我們都是先進入到 /usr/local/hadoop 目錄中,再執行 sbin/hadoop
,實際上等同於執行
/usr/local/hadoop/sbin/hadoop
。我們可以將 Hadoop 命令的相關目錄加入到 PATH 環境變數中,這樣就可以直接通過start-dfs.sh
開啟 Hadoop,也可以直接通過hdfs
訪問 HDFS 的內容,方便平時的操作。
同樣我們選擇在 ~/.bashrc 中進行設定(vim ~/.bashrc
,與 JAVA_HOME 的設定相似),在檔案最前面加入如下單獨一行:
export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
新增後執行 source ~/.bashrc
使設定生效,生效後,在任意目錄中,都可以直接使用 hdfs
等命令了,讀者不妨現在就執行hdfs dfs -ls input
檢視 HDFS 檔案試試看。
安裝Hadoop叢集
在平時的學習中,我們使用偽分散式就足夠了。如果需要安裝 Hadoop 叢集,請檢視Hadoop叢集安裝配置教程。
相關教程
- 使用Eclipse編譯執行MapReduce程式: 使用 Eclipse 可以方便的開發、執行 MapReduce 程式,還可以直接管理 HDFS 中的檔案。