天天看點

Hadoop核心之MapReduce架構設計

hadoop主要由兩大部分組成,一個是分布式檔案系統即hdfs,另一個是分布式計算架構mapreduce。

關于hdfs詳細介紹請參考:【hadoop核心之hdfs 架構設計】

本篇重點介紹分布式計算架構mapreduce。在hadoop的mapreduce架構中主要涉及到兩個元件:jobtracker和tasktracker(hdfs中的元件是namenode和datanode),下面我們就分别看一下這兩個元件。

tasktracker一個hadoop計算程序,運作在hadoop叢集的datanode節點上。tasktracker的主要任務是運作jobtracker配置設定給它的實際計算任務,如運作map、reduce函數,當然也包括shuffle過程。tasktracker任務具體運作在一組slots上,slots的數量可以配置,一般slots的數量會配置成和這台機器的cpu核心數量一緻。當tasktracker收到jobtracker配置設定的一個task時,jobtracker會為這個task單獨啟動一個jvm程序,也就是說,每個map、reduce任務都會單獨運作在一個jvm程序中(jvm也可以重用,這裡不多做介紹)。tasktracker被配置設定的task數量決定于目前還有多少個空閑的slots。tasktracker在運作task的過程中會向jobtracker發送心跳資訊,發送心跳出了要告訴jobtracker自己是否存活外,心跳資訊中還包含目前空閑的slots數量等資訊。

jobtracker程序的作用是運作和監控mapreduce的job,當一個用戶端向jobtracker送出任務時,過程如下圖:

Hadoop核心之MapReduce架構設計

關于job執行過程的更詳細的資訊,請參考【 hadoop工作機制】