Hadoop下面WordCount運行詳解


單詞計數是最簡單也是最能體現MapReduce思想的程序之一,可以稱為MapReduce版"Hello World",該程序的完整代碼可以在Hadoop安裝包的"src/examples"目錄下找到。單詞計數主要完成功能是:統計一系列文本文件中每個單詞出現的次數,如下圖所示。

image

現在我們以"hadoop"用戶登錄"Master.Hadoop"服務器。

1. 創建本地的示例數據文件:

依次進入【Home】-【hadoop】-【hadoop-1.2.1】創建一個文件夾file用來存儲本地原始數據。

image

並在這個目錄下創建2個文件分別命名為【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。

分別在這2個文件中輸入下列示例語句:

image

image

2. 在HDFS上創建輸入文件夾

呼出終端,輸入下面指令:

bin/hadoop fs -mkdir hdfsInput

執行這個命令時可能會提示類似安全的問題,如果提示了,請使用

bin/hadoop dfsadmin -safemode leave

來退出安全模式。

當分布式文件系統處於安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結 束。安全模式主要是為了系統啟動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的復制或者刪除部分數據塊。運行期通過命令也可以進入 安全模式。

意思是在HDFS遠程創建一個輸入目錄,我們以后的文件需要上載到這個目錄里面才能執行。

3. 上傳本地file中文件到集群的hdfsInput目錄下

在終端依次輸入下面指令:

cd hadoop-1.2.1

bin/hadoop fs -put file/myTest*.txt hdfsInput

image

 

4. 運行例子:

在終端輸入下面指令:

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput

注意,這里的示例程序是1.2.1版本的,可能每個機器有所不一致,那么請用*通配符代替版本號

bin/hadoop jar hadoop-examples-*.jar wordcount hdfsInput hdfsOutput

應該出現下面結果:

image

Hadoop命令會啟動一個JVM來運行這個MapReduce程序,並自動獲得Hadoop的配置,同時把類的路徑(及其依賴關系)加入到Hadoop的庫中。以上就是Hadoop Job的運行記錄,從這里可以看到,這個Job被賦予了一個ID號:job_201202292213_0002,而且得知輸入文件有兩個(Total input paths to process : 2),同時還可以了解map的輸入輸出記錄(record數及字節數),以及reduce輸入輸出記錄。

查看HDFS上hdfsOutput目錄內容:

在終端輸入下面指令:

bin/hadoop fs -ls hdfsOutput

image

從上圖中知道生成了三個文件,我們的結果在"part-r-00000"中。

使用下面指令查看結果輸出文件內容

bin/hadoop fs -cat output/part-r-00000

image

(注意:請忽視截圖指令中的3)

輸出目錄日志以及輸入目錄中的文件是永久存在的,如果不刪除的話,如果出現結果不一致,請參考這個因素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM