Yarn和mesos區別

參考:https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/html

YarnHadoop2的產物。提到這個問題就不得不說下Hadoop1Hadoop2的差異。apache

  

 

  詳細的內容可參考博客:https://blog.csdn.net/jiangheng0535/article/details/12946529 架構

Hadoop1的架構是:多個Application --> JobTracker --> 多個TaskTrackerapp

多個Application提交任務到JobTrackerJobTracker根據application申請資源狀況啓動並監控TaskTracker的狀態。簡單點來講存在如下四個問題:框架

1JobTracker Map-reduce 的集中處理點,存在單點故障。分佈式

2JobTracker 既要監控各個Task的執行狀態,又要作任務調度,負責的任務太多,形成了過多的資源消耗。當 map-reduce job 很是多的時候,會形成很大的內存開銷,潛在來講,也增長了 JobTracker fail 的風險,這也是業界廣泛總結出老 Hadoop Map-Reduce 只能支持 4000 節點主機的上限。oop

 

3、在 TaskTracker 端,以 map/reduce task 的數目做爲資源的表示過於簡單,沒有考慮到 cpu/ 內存的佔用狀況,若是兩個大內存消耗的 task 被調度到了一塊,很容易出現 OOM性能

 

4、在 TaskTracker 端,把資源強制劃分爲 map task slot reduce task slot, 若是當系統中只有 map task 或者只有 reduce task 的時候,會形成資源的浪費,也就是前面提過的集羣資源利用的問題。大數據

 

Yarn有沒有解決問題?spa

 hadoop2的架構是:多個application --> ResourceManager --> 多個NodeManager --> 多個application Master --> 多個container

多個Application提交任務到ResouceManagerResourceManager經過NodeManager針對於每一個application啓動一個application Master

application Master經過向ResourceManger申請資源,啓動container

 

針對於上述問題:
1yarn可經過ResouceManagerHA來解決單點故障問題。

  http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html 

 

2yarn JobTracker 兩個主要的功能資源管理和任務調度 / 監控分離成單獨的組件。新的資源管理器全局管理全部應用程序計算資源的分配,每個應用的 ApplicationMaster 負責相應的調度和協調。

 

3yarn 經過NodeManager詳細地統計了各個節點各個緯度的資源使用狀況。

 

4yarncontainer沒有mapreduce之分,可充分利用資源。

 

mesos解決了什麼問題?

 關於mesos,詳細內容可參考博客 http://www.javashuo.com/article/p-chgavfsq-v.html 

各類大數據計算框架不斷出現,支持離線處理的MapReduce、在線處理的Storm,迭代計算框架Spark、及流式處理框架S4……各類分佈式計算框架應運而生,

各自解決某一類應用中的問題。Mesos能夠在各個框架間進行粗粒度的資源分配,每一個框架根據自身任務的特色進行細粒度的任務調度

其架構以下:

 

 

 Mesos Master:整個系統的核心。主要負責管理各個Framework(經過Framework_manager管理接入的各個Framework)和Slave(經過Slaves_manager管理全部的Slave),並將Slave上的資源按照某資源分配策略分配給各個Framework

 Mesos Slave:接收來自Mesos Master的命令、管理本地節點上的各個Mesos Task,如爲每一個Executor分配資源。Mesos Slave將本身的資源量(包括CPU和內存)發送經Mesos Master,由Mesos MasterAllocator模塊決定資源的具體分配;

 Framework:負責外部的計算框架的接入,如HadoopSpark等。這些外部計算框架經過註冊的方式接入Mesos,由Mesos進行分佈式集羣資源的分配;而任務的調度和執行由計算機框架自己完成(即計算框架自己調度器負責將資源分配給具體的任務); 

 Executor:啓動框架內部的Task。因爲不一樣的框架接入Mesos的接口、方式不一樣,因此新框架接入Mesos須要編寫本身的executor,通知Mesos如何啓動框架中的Task

 mesosyarn有哪些不一樣?

 

1MesosYarn都採用雙層調度機制,即資源管理系統層(將資源分配給應用程序)和資源調度層(將資源具體分配給計算框架中的任務),但資源分配程度不一樣。Mesos只負責爲Framework計算框架提供資源,具體的資源分配由計算框架本身實現。而Yarn則從計算框架中分離出資源管理,本身全權負責資源分配及調度;

2Mesos採用Linux Container容器(一種內核虛擬化技術)對多計算框架共享資源進行隔離。而Yarn則是經過進程隔離,這一點Yarn的性能比較好(Yarn的發展借鑑了Mesos思想);

 

連接:https://www.jianshu.com/p/a4ba843b09cc

相關文章
相關標籤/搜索