天天看點

分布式并行計算MapReduce

1.用自己的話闡明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作過程。

MapReduce是并行處理架構,實作任務分解和排程。

其實原理說通俗一點就是分而治之的思想,将一個大任務分解成多個小任務(map),小任務執行完了之後,合并計算結果(reduce)。

分布式并行計算MapReduce

也就是說,JobTracker拿到job之後,會把job分成很多個maptask和reducetask,交給他們執行。 MapTask、ReduceTask函數的輸入、輸出都是<key,value>的形式。HDFS存儲的輸入資料經過解析後,以鍵值對的形式,輸入到MapReduce()函數中進行處理,輸出一系列鍵值對作為中間結果,在Reduce階段,對擁有同樣Key值的中間資料進行合并形成最後結果。

首先我們需要先知道幾個小概念:

1.job  2.task  3.jobTracker  4.taskTracker

job:在Hadoop内部,用Job來表示運作的MapReduce程式所需要用到的所有jar檔案和類的集合,>這些檔案最終都被整合到一個jar檔案中,将此jar檔案送出給JobTraker,MapReduce程式就會執行。

task:job會分成多個task。分為MapTask和ReduceTask。

jobTracker:管理節點。将job分解為多個map任務和reduce任務。

2.HDFS上運作MapReduce

1)準備文本檔案,放在本地/home/hadoop/wc

分布式并行計算MapReduce

2)編寫map函數和reduce函數,在本地運作測試通過

分布式并行計算MapReduce
分布式并行計算MapReduce

3)啟動Hadoop:HDFS, JobTracker, TaskTracker

分布式并行計算MapReduce

4)把文本檔案上傳到hdfs檔案系統上 user/hadoop/input 

分布式并行計算MapReduce

5)streaming的jar檔案的路徑寫入環境變量,讓環境變量生效

分布式并行計算MapReduce

6)建立一個shell腳本檔案:streaming接口運作的腳本,名稱為run.sh

分布式并行計算MapReduce

7)source run.sh來執行mapreduce

分布式并行計算MapReduce

8)檢視運作結果

分布式并行計算MapReduce

每位同學準備不一樣的大一點英文文本檔案,每個步驟截圖交上部落格上。

上述步驟測試通過之後,可以嘗試對文本做處理之後再統計次數,如标點符号、停用詞等。

有能力的同學嘗試對之前爬蟲爬取的文本,在Hadoop上做中文詞頻統計。