1. 程式人生 > 程式設計 >hadoop執行第一個例項wordcount

hadoop執行第一個例項wordcount

引語:

這幾周事情比較多,兩週沒寫部落格了,這周總算把hadoop的例項給執行起來,然後跑了一下官方的wordcount例子(用於統計檔案中單詞出現的次數)。 接下來是我成功執行例項的記錄。執行的前提是安裝配置好hadoop(可以參考我上一篇部落格:hadoop偽分散式安裝記錄

執行步驟:

1.先準備一個包含單詞的檔案,然後將這個檔案上傳到linux伺服器上。 檔案內容:

hello world hello hadoop
abc hadoop aabb hello word
count test hdfs mapreduce
複製程式碼

2.使用hdfs的命令建立好輸入檔案的目錄(hfds的命令基本上和linux一樣,可以去官網上檢視下) hadoop fs -mkdir /input/wordcount 然後在建立一個輸出目錄/output為後續hadoop存放執行結果

3.然後將檔案放入到hadoop的檔案系統中hadoop fs -put /home/file1 /input/wordcount 建立完可以使用ls檢查一下是否檔案存在 hadoop fs -ls -R /

4.再進入到hadoop的share/hadoop/mapreduce中,有一個hadoop-mapreduce-examples-3.1.2.jar 通過hadoop jar hadoop-mapreduce-examples-3.1.2.jar 可以檢視到這個官方給的例子裡面有哪些程式可以執行 如下:

可以看到很多自帶的使用程式,我們這裡就使用wordcount。 執行命令

hadop jar hadoop-mapreduce-examples-3.1.2.jar /input/wordcount /output/wordcount
複製程式碼

最後的兩個引數一個是檔案的輸入路徑,就是我們之前建立再hdfs的路徑,第二個引數是檔案的輸出路徑, 如果沒有的話hadoop會自己建立。
5.然後首先會進行map的過程,在使reduce的過程,這裡可以理解為分而治之的步驟,map是多臺機器上分別處理檔案的中間結果,然後通過reduce(減少,聚合)把結果給彙總。 而且是先map執行完再回執行reduce。

6.去輸出檔案中檢視結果,output/wordcount裡面會有三個檔案,有一個帶part的就是輸出結果,可以使用hadoop fs -cat 輸出檔案的路徑檢視結果

總結:

雖然看起來步驟不是很多,內容也比較簡單,但是坑還是挺多的。要注意的點:
1.偽分散式搭建的hadoop,hostname這個要設定好,要和配置檔案中一致,實在不行就直接指定127.0.0.1(反正我是這樣解決了)
2.yarn的記憶體配置要合理,太小了發現會一直卡在runing job這個環節或者一直卡在map 0%這裡,此時要去yarn-site中設定好記憶體的大小(根據實際伺服器的記憶體設定,我設定的是2048M後就可以了)
3.如果發現卡在某個環節,記得去檢視hadoop安裝目錄下的logs,裡面有很多日誌型別,包括nodeManageer,resourceManager等,執行不動了,日誌裡面會有相應的日誌和提示可以幫助發現問題。