1. 程式人生 > >Hadoop架構介紹——MapReduce的體系結構

Hadoop架構介紹——MapReduce的體系結構

MapReduce的體系結構:

-分散式程式設計架構

-以資料為中心,更看重吞吐率

-分而治之(把對大規模資料集的操作,分發給一個主節點管理下的各個分節點共同完成,然後整合各個節點的中間結果得到最終的輸出)

-Map把一個任務分解成多個子任務

-Reduce將分解後的多工分別處理,並將結果彙總為最終的結果

應用舉例:清點圖書館藏書、統計單詞的出現次數、混合辣椒醬的製作等等。

結構圖:

也採用了Master-Slaver結構。

4個實體:

-Client

-JobTraker

-TaskTraker(任務節點)

-HDFS(輸入、輸出資料、配置資訊等)


基本概念:

作業(Job):在Hadoop內部,用Job來表示執行的MapReduce程式所需要用到的所有jar檔案和類的集合,這些檔案最終都被整合到一個jar檔案中,將此jar檔案提交給JobTraker,MapReduce程式就會執行

任務(Task):MapTask和ReduceTask

鍵值對(key/value pair)

 Map()、Reduce()函式的輸入、輸出都是<key,value>的形式

HDFS儲存的輸入資料經過解析後,以鍵值對的形式,輸入到MapReduce()函式中進行處理,輸出一系列鍵值對作為中間結果,在Reduce階段,對擁有同樣Key值的中間資料進行合併形成最後結果。

生命週期:
1.提交作業

-在作業提交之前,需要對作業進行配置;

-程式程式碼,主要是自己編寫的MapReduce程式;

-配置輸入輸出路徑、輸出是否壓縮;

-配置完成後,通過JobClient來提交;

  作業排程演算法:

  FIFO排程器(預設)、公平排程器、容量排程器

2.任務分配

-TaskTracker和JobTracker之間的通訊與任務的分配是通過心跳機制完成的;

-TaskTracker會主動向JobTracker詢問是否有作業要做,如果自己可以做,那麼就會申請到作業任務,這個任務       可以使Map也可能是Reduce任務;

3.任務執行 

-TaskTraker將程式碼和配置資訊到本地;

-分別為每一個Task啟動JVM執行任務

4.狀態更新

-任務在執行過程中,首先會將自己的狀態彙報給TaskTracker,然後由TaskTracker彙總告之JobTracker;

-任務進度是通過計數器來實現的;

-JobTracker是在接受到最後一個任務執行完成後,才會將作業標誌為成功。