Yarn与Mesos

本篇记录下学习资源分配与任务调度的一些内容。

为什么会有Yarn?

Yarn是Hadoop2的产物。提到这个问题就不得不说下Hadoop1与Hadoop2的差别。详细的内容可参考博客:https://blog.csdn.net/jiangheng0535/article/details/12946529

Hadoop1的架构是:多个Application --> JobTracker --> 多个TaskTracker。

多个Application提交任务到JobTracker,JobTracker根据application申请资源情况启动并监控TaskTracker的状态。简单点来说存在以下四个问题:

1、JobTracker 是 Map-reduce 的集中处理点,存在单点故障。

2、JobTracker 既要监控各个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提交任务到ResouceManager,ResourceManager通过NodeManager针对于每个application启动一个application Master。application Master通过向ResourceManger申请资源,启动container。

针对于上述问题: 1、yarn可通过ResouceManager的HA来解决单点故障问题。http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

2、yarn 将 JobTracker 两个主要的功能资源管理和任务调度 / 监控分离成单独的组件。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。

3、yarn 通过NodeManager详细地统计了各个节点各个纬度的资源使用情况。

4、yarn的container没有map和reduce之分,可充分利用资源。

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 Master的Allocator模块决定资源的具体分配;

Framework:负责外部的计算框架的接入,如Hadoop、Spark等。这些外部计算框架通过注册的方式接入Mesos,由Mesos进行分布式集群资源的分配;而任务的调度和执行由计算机框架本身完成(即计算框架本身调度器负责将资源分配给具体的任务);

Executor:启动框架内部的Task。由于不同的框架接入Mesos的接口、方式不同,所以新框架接入Mesos需要编写自己的executor,通知Mesos如何启动框架中的Task。

mesos与yarn有哪些不同?

1、Mesos和Yarn都采用双层调度机制,即资源管理系统层(将资源分配给应用程序)和资源调度层(将资源具体分配给计算框架中的任务),但资源分配程度不同。Mesos只负责为Framework计算框架提供资源,具体的资源分配由计算框架自己实现。而Yarn则从计算框架中分离出资源管理,自己全权负责资源分配及调度;

2、Mesos采用Linux Container容器(一种内核虚拟化技术)对多计算框架共享资源进行隔离。而Yarn则是通过进程隔离,这一点Yarn的性能比较好(Yarn的发展借鉴了Mesos思想);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序生活

大数据入门与实战-Hadoop核心HDFSHadoop简介一、 HDFS概念及优缺点二、HDFS写流程与读流程三、Shell命令操作HDFS四 、Python程序操作HDFS

课程链接:https://www.imooc.com/video/16287 Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构...

38260
来自专栏java架构师

Hadoop总结篇之二--yarn的概况

在弄清楚yarn是什么之前,先来看一下MRv1。 它的由编程模型+数据处理引擎(map/reduceTask)+运行时环境组成(JobTracker/TaskT...

371110
来自专栏牛肉圆粉不加葱

【容错篇】Spark Streaming的还原药水——Checkpoint

一个 Streaming Application 往往需要7*24不间断的跑,所以需要有抵御意外的能力(比如机器或者系统挂掉,JVM crash等)。为了让这成...

9620
来自专栏Albert陈凯

Hadoop系统架构与简单介绍

Hadoop系统架构 一、Hadoop系统架构图 ? Hadoop1.0与hadoop2.0架构对比图 ? YARN架构: ResourceM...

44470
来自专栏LhWorld哥陪你聊算法

【Spark篇】---SparkStreaming+Kafka的两种模式receiver模式和Direct模式

SparkStreamin是流式问题的解决的代表,一般结合kafka使用,所以本文着重讲解sparkStreaming+kafka两种模式。

40810
来自专栏大数据学习笔记

Spark2.x学习笔记:4、Spark程序架构与运行模式

4、 Spark程序架构与运行模式 4.1 Spark程序最简架构 所有的Spark程序运行时,主要由两大类组件Driver和Excutor构成。 每个Spar...

34290
来自专栏张浩的专栏

Spark本地调试的使用Hive配置文件

在本地调试的时候发现把Hive的hive-site.xml放到项目的resources目录下,就可以让Spark读取hive-site.xml中的Hive的配置...

49010
来自专栏懒人开发

Zookeeper应用:hadoop的HA简单实现

hadoop的HDFS集群的分布式存储是靠NameNode节点(namenode负责响应客户端请求)来实现。NameNode对应整个hadoop来说,无非是很重...

96750
来自专栏码字搬砖

hive原理分析

基于hive1.1(从hive2.0开始,hive开始基于内存了,底层的实现框架不在基于MR)

41730
来自专栏个人分享

Hadoop系统架构

步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。

84030

扫码关注云+社区

领取腾讯云代金券