Hadoop MapReduce架構簡介(初學學習不錯)

逸卿發表於2014-05-08

    MapReduce採用主從結構,JobTracker作為主節點,TaskTracker作為從節點。

        其架構圖詳見圖1所示:

        

圖1   MapReduce架構圖

1、Client

       使用者編寫的MapReduce程式通過Client提交到JobTracker端,還可通過Client提供的一些介面檢視作業的執行狀態。在Hadoop內部,用Job(作業)表示MapReduce程式。一個MapReduce程式對應若干個作業,而每個作業會被分解成若干個Map Task或Reduce Task。


2、JobTracker

        JobTracker的職責:

        接收客戶端提交的計算任務(Job);

        通過任務排程器(TaskSheduler)分配計算任務給TaskTracker執行;

        監控所有TaskTracker與作業的健康狀況,當發現任務出現故障時,將相應的任務轉移到其他的節點。

        打個比方,JobTracker相當於企業軟體開發的專案經理,主要負責各種資源的準備、排程和開發任務的分配。


3、TaskTracker

        TaskTracker週期性的通過Heartbeat將本節點資源的使用情況和任務的執行進度彙報給JobTracker,同時接收JobTracker傳送過來的命令並執行相應的操作,如啟動新的任務、殺死作業等等。相對應的,TaskTracker相當於開發人員,主要執行專案經理分配的開發任務,並按時向專案經理彙報專案的開發進度。


4、Task

       Task分為Map Task和Reduce Task兩種,都是由TaskTracker啟動。MapReduce的處理單位是split,它是一個邏輯概念(意味著實際上並沒有對資料切割),只包含一些後設資料資訊,如資料偏移量、資料長度等。Split的多少決定了Map Task的多少,因為每個split會交給一個Map Task處理。


Map Task的執行過程如下圖所示:


Map Task的執行過程:

       Map Task先將對應的split迭代解析成一個個的<key,value>對,然後依次呼叫使用者自定義的map()方法進行處理,最終將臨時結果存放到本地磁碟上,其中,臨時結果被分成若干個partition,每個partition將被一個Reduce Task處理。


Reduce Task的執行過程如下圖所示:


Reduce Task的執行過程:

       1)、從遠端節點上讀取Map Task中間結果,這是Shuffle階段;

       2)、按照key對key/value pair進行排序,這是Sort階段;

       3)、依次讀取<key, value list>,呼叫使用者自定義的reduce()方法處理,

並最終的結果存到HDFS,這是Reduce階段。

相關文章