DataNode 和NameNode 是針對數據存放來而言的
JobTracker和TaskTracker是對於MapReduce執行而言的
一:JobTracker
JobTracker協作作業的運行;
負責調度分配每一個子任務task運行於TaskTracker上,如果發現有失敗的task就重新分配其任務到其他節點。
一般情況應該把JobTracker部署在單獨的機器上。JobTracker與TaskTracker把持心跳;
JobTracker失敗:
1:JobTracker失敗在所有的失敗中是最嚴重的一種;
2:hadoop沒有處理jobtracker失敗的機制。--它是一個單點故障。
3:在未來的新版本中可能可以運行多個JobTracker。(hadoop2.0以后)
4:可以使用ZooKeeper來協作JobTracker。(以后會有zookeeper專題)
二:TaskTracker
TaskTracker運行作業划分后的任務
TaskTracker是運行在多個節點上的slaver服務。TaskTracker主動與JobTracker通信,接收作業,並負責直接
執行每一個任務,為了減少網絡帶寬
TaskTracker最好運行在HDFS的DataNode上;
TaskTracker失敗:
1:一個TaskTracker由於崩潰或運行過於緩慢而失敗,它會向JobTracker發送“心跳”。
2:如果有未完成的作業,JobTracker會重新把這些任務分配到其他的TaskTracker上面運行。
3:即使TaskTracker沒有失敗也可以被JobTracker列入黑名單。
三:hadoop調度器 Hadoop Job Scheduler
Hadoop默認的調度器是基於隊列的FIFO調度器:
所有用戶的作業都被提交到一個隊列中,然后由JobTracker先按照作業的優先級高低,再按照作業提交時間 的先后順序選擇將被執行的作業。
優點: 調度算法簡單明了,JobTracker工作負擔輕。
缺點: 忽略了不同作業的需求差異。
Fair Scheduler(公平調度器):
1:多個Pool,Job需要被提交到某個Pool中;
2:每個pool可以設置最小 task slot(猜測最小的job數),稱為miniShare
3:FS會保證Pool的公平,Pool內部支持Priority(優先級)設置,支持資源搶占(優先級)