1. 程式人生 > >Mapreduce工作機制(一)框架

Mapreduce工作機制(一)框架


1.JobTracker是一個皇帝,在一個叢集中只有一個,他有個太子是secondnamenode,在皇帝宕機的時候,需要人為去啟用secondnamenode這個太子,下面那些節點就是皇帝的官員,可以有很多個,TaskTracker是這些官員的指揮中心,一邊跟皇帝聯絡一邊指揮自己節點執行任務,DataNode主要是放每個節點裡面要處理的資料。。。mapreduce程式可以在任何節點上面提交給JobTracker。

2.JobClient相當一個太監總管,在有任務mapreduce程式執行的時候,在皇帝那裡申請了一個ID,因為皇帝本來是有很多工需要處理所以要用ID區別開。

3.太監申請到了ID之後就在HDFS檔案系統裡面建一個以這個ID為目錄,將這個mapreduce任務需要用到的資源(jar包,資料等)放到這個目錄下面,資料是計算好的inputsplit一個塊一個塊的形式存放進去。

4.然後太監跟皇帝提交了任務。

5.皇帝自己有個作業排程器job scheduler,把這個任務交由他進行排程,並對其進行初始化。

6.這個排程器為了建立任務列表,把任務細化了,就去HDFS檔案系統中獲取已經計算好的InputSplit的資訊,然後為每個InputSplit建立人物。

7.這個heartbeat是官員隔幾分鐘就要向皇帝報告他的執行情況,官員是死是活,忙不忙,任務執行的怎麼樣,然後皇帝時刻監控下面每個官員的情況。因為知道他們的情況就可以把任務分配出去給哪些官員去執行。

8.有分配到任務的官員就去HDFS檔案系統裡面將這個小任務需要的程式跟資料從檔案系統中下載到節點。

9.官員為這個任務新建一個本地工作目錄,將JAR檔案中的內容解壓到這個資料夾下。

10.官員新建一個TaskRunner例項來執行該任務,TaskRunner啟動一個新的JVM虛擬機器來執行每個任務。

學習了一週我對我自己的要求就是要用自己的語言來表達處理,最好是這種形象化的,有趣又好記,可能裡面很多舉例不是很對,很多細節也沒有說清楚,接下來我會繼續完善