1. 程式人生 > >指導手冊04:執行MapReduce.md

指導手冊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己被中斷。