Yarn和mesos區別


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

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

  

 

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

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

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

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

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

 

3、在 TaskTracker 端,以 map/reduce task 的數目作為資源的表示過於簡單,沒有考慮到 cpu/ 內存的占用情況,如果兩個大內存消耗的 task 被調度到了一塊,很容易出現 OOM

 

4、在 TaskTracker 端,把資源強制划分為 map task slot reduce task slot, 如果當系統中只有 map task 或者只有 reduce task 的時候,會造成資源的浪費,也就是前面提過的集群資源利用的問題。

 

Yarn有沒有解決問題?

 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,詳細內容可參考博客 https://blog.csdn.net/u012050154/article/details/52572756 

各種大數據計算框架不斷出現,支持離線處理的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM