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

相关文章
相关标签/搜索