指導手冊04:執行MapReduce.md
指導手冊04:執行MapReduce
Part 1:執行單個MapReduce任務
情景描述:
本次任務要求對HDFS目錄中的資料檔案/user/root/email_log.txt進行計算處理,統計出第個使用者的登入次數。
情景分析:統計出每個使用者登入次數,等同於求出每個email出現的次數,可以進一步抽象為統計每個單司出現的頻次。在Hadoop官方提供的示例包中,正好有進行記頻統計的模組。
1.Hadoop官方的示例程式包
在叢集伺服器的本地目錄”$HADOOP_HOME/share/hadoop/mapreduce/中可發現示例程式包hadoop-mapreduce-examples-2.6.4.jar
模組名稱 | 內容 |
---|---|
multifilewc | 統計多個檔案中單詞的數量。 |
pi | 應用quasi-Monte Carlo 演算法來估算圓周率π的值。 |
randomtextwriter | 在每個資料節點隨機生成1個10GB的文字檔案。 |
wordcount | 對輸入檔案中的單詞進行頻數統計。 |
wordmean | 計算輸入檔案中單詞的平均長度。 |
wordmedian | 計算輸入檔案中單詞長度的中位數。 |
wordstandarddeviation | 計算輸入檔案中單詞長度的標準差。 |
2.提交MapReduce任務給叢集執行
提交MapReduce任務,通常使用hadoop jar 命令。它的基本用法格式如下
Hadoop jar <jar> [mainClass] args
因為hadoop jar 命令的附帶引數較多,下面結合實際任務,對它的各項引數依次進行說明。
例:
[[email protected] opt]# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-exampes-2.6.4.jar wordcount /user/root/emil_log.txt /user/root/output (emil_log.txt請參考指導手冊03上傳)
引數說明:
$HADOOP_HOME:指主機中設定的環境變數
hadoop-mapreduce-exampes-2.6.4.jar :Hadoop官方提供的示例程式包
wordcount:程式中的主類名稱
/user/root/emil_log.txt:HDFS上的輸入檔名稱
/user/root/output: HDFS上輸出的檔案目錄
3.執行結果檢視
Part 2: 管理多個MapReduce任務
情景描述:
Hadoop是一個多工系統,它可以同時為多個使用者、多個作業處理多個數據集。對於提交到Hadoop叢集的多個任務,使用者如何進行有效管理。比如,想知道叢集完成了哪些任務;執行結果是成功還是失敗;怎麼檢查任務的實際執行情況;如果某個任務執行時間過長,怎麼中斷它。
當用戶提交了多個任務後,通常可以使用資源管理器的服務介面,對提交後的任務進行查詢。當發現有異常時,可以中斷當前作業或查詢指定的日誌檔案。
1.查詢MapReduce任務
**例:**呼叫Hadoop的示例程式包,採用Qqusi-Monte Carlo演算法來估算PI的值。後面兩個引數代表Map數量與每個Map的測量次數,引數的值越大,計算出來的結果精度越高。
Hadoop jar /usr/local/hadoop-2.6.4/share/hadoop/mapredduce/hadoop-mapreduce-example-2.6.2.jar pi 10 100
檢視MapReduce任務的計算機資源使用情況:,再單擊左側選單欄的”Nodes”.
可以看到叢集可用記憶體共有6GB,被使用了5.5G,剩餘512MB,CPU核心有3個。
請執行程式,將你的叢集資訊填寫如下:
可用記憶體 | 記憶體使用 | 剩餘記憶體 | CPU核心個數 |
---|
繼續查詢當前任務的資訊,單擊左側選單欄中的“Applicatiions”,或者直接訪問http://master:8088/cluster/apps顯示如下結果。
它的狀態值為“RUNNNING”,表示這個任務正執行中。
2.同時提交兩個任務,進行觀察
示例任務1:統計使用者登入次數
[[email protected] opt]# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-exampes-2.6.4.jar wordcount /user/root/emil_log.txt /user/root/output1 (emil_log.txt請參考指導手冊03上傳)
示例任務2:執行估算PI值
[[email protected] opt]# Hadoop jar /usr/local/hadoop-2.6.4/share/hadoop/mapredduce/hadoop-mapreduce-example-2.6.2.jar pi 10 100
提交兩個作業後,觀察叢集上的計算機資源使用情況。
作業0001的狀態“RUNNING”,表示它正在執行中。而作業0002的狀態是“ACCEPTED”,表示它已被資源管理器YARN接受,目前在等待被分配計算資源,只有當計算資源滿足後,才會開始執行。
3.中斷MapReduce任務
人為中斷第1個作業:點選任務1的ID進入任務1,點選圖中Kill Application即可中斷該任務。
再次重新整理任務介面,可以發現原來的作業1己被中斷。