YARN與MapReduce的區別
首先介紹一下老的MapReduce的機制,老的MapReduce的具體流程如下,
JobClient提交Job給Job Tracker,Job Tracker與叢集所有機器通訊(heartbeat),管理所有job失敗、重啟等操作。Task Tracker是在每一臺機器上都有的,主要用來監視自己所在機器的task執行情況及機器的資源情況,然後把這些資訊通過heartbeat傳送給Job Tracker。
MapReduce存在的問題:
1 Job Tracker 存在單點故障
2 Job Tracker 完成太多工,當MR任務非常多時,造成很大的記憶體開銷
3 Task Tracker 端,如果兩個大記憶體消耗的任務一起排程,容易出現OOM,如果只有Map任務或Reduce任務時會造成資源浪費
下面介紹一下YARN的機制及與MapReduce相比的優勢,
老的MapReduce主要包括Job Tracker和Task Tracker,YARN中主要是三個元件:Resource Manager、Node Manager和Application Master。Resource Manager負責全域性資源分配,Application Master每個節點一個,負責當前節點的排程和協調。Node Manager是每臺機器的代理,監控應用程式的資源使用情況,並彙報給Resource Manager。因此與老的MapReduce相比,YARN把資源管理與任務排程的工作分離開來,減少了MapReduce中Job Tracker的壓力。
從以上介紹可以看出,相比於MapReduce,YARN主要優勢如下,
1 YARN大大減少了Job Tracker的資源消耗,並且讓監測每個Job子任務狀態的程式分散式化了。
2 YARN中Application Master是一個可變更部分,使用者可以對不同程式設計模型編寫自己的AppMst,讓更多型別的程式設計模型能跑在Hadoop叢集中。
3 老的框架中,Job Tracker一個很大的負擔就是監控Job下任務的執行狀況,現在由Application Master去做,而Resource Manager是監測Application Master的執行狀況,如果出問題,會將其在其他機器上重啟。