YARN中自己总结的几个关键点
以前在Hadoop 1.0中JobTracker主要完成两项功能:资源的管理和作业控制。在集群规模过大的场景下,JobTracker
存在以下不足:
1)JobTracker 单点故障。
2)JobTracker 承受的访问压力大,影响系统的扩展性。
3)不支持MapReduce之外的计算框架,比如Storm、Spa rk、Flink
因此在YARN的设计中,资源的管理和作业控制是分离开的。取代JobTracker的是ResourceManager、ApplicationMaster两个部分。
● Resource Manager是一个全局的资源管理器 ,它做的事情是调度、启动每一个Job所属的ApplicationMaster、另外监控ApplicationMaster的存在情况。注:RM只负责监控AM,在AM运行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完成。(是通过RM中的applicationManager来完成的)
● ApplicationMaster是每一个Job(不是每一种)都有的一个部分,ApplicationMaster可以运行在ResourceManager以外的机器上,每个应用程序对应一个ApplicationMaster。。
● NodeManager是ResourceManager的在每个节点的代理,负责 Container 状态的维护,并向RM保持心跳。
● 另外,YARN使用Container对资源进行抽象,它封装了某个节点上一定量的资源(现在YARN仅支持CPU和内存两种资源)。当AM向RM申请资源时,RM为AM返回的资源使用Container表示。YARN会为每个任务分配一个或多个Container,且该任务只能使用该Container中描述的资源。(注:AM也是运行在一个Container中),)目前可以支持多种计算框架运行在YARN上面,比如MapReduce、Storm、Spark、Flink。
说明一下container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
要使用一个 YARN 集群,首先需要来自包含一个应用程序的客户的请求。
YARN设计的优点
● 将资源管理和作业控制分离,减小JobTracker压力
○ YARN的设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
○ 老的框架中,JobTracker一个很大的负担就是监控job下的tasks的运行状况,现在,这个部分就扔给ApplicationMaster做了而ResourceManager中有一个模块叫做ApplicationsManager(ASM),它负责监测ApplicationMaster的运行状况。
● 能够支持不同的计算框架
工作原理

mapreduce on yarn

ARN的不足与展望
YARN是一个双层调度器(Two-level scheduler),解决了中央调度器(Monolithic scheduler)的不足(中央调度器典型的代表就是JobTracker),双层调度架构看上去为调度增加了灵活性和并发性,但实际上它保守的资源可见性和上锁算法(使用悲观并发)也限制了灵活性和并发性。第一,保守的资源可见性导致各框架无法感知整个集群的资源使用情况,有空闲资源无法通知排队的进程,容易造成资源的浪费;第二,上锁算法降低了并发性,调度器会将资源分配给一个架构,只有该架构返回资源后,调度器才回将该部分资源分配给其他架构,在第一个分配过程中,资源相当于被锁住,从而降低了并发性。总结来说,YARN同其他双层架构的调度器(例如:Mesos)都有的不足为:
● 各个应用无法感知集群整体资源的使用情况,只能等待上层调度推送信息。
● 资源分配采用轮询、ResourceOffer机制(mesos),在分配过程中使用悲观锁,并发粒度小。
● 缺乏一种有效的竞争或优先抢占的机制。
为了改善双层调度系统的的不足,尤其是各个应用无法感知集群整体资源的使用情况和悲观加锁控制导致的并发性不高这两个不足,共享状态调度器(Shared State Scheduler)被越来越多的人所重视,其中最具代表性的就是Google的Omega。共享状态调度器在双层调度器的基础上做了改进:
● 简化了双层调度器中的全局资源管理器,改为由一个Cell State来记录集群内的资源使用情况,这些使用情况都是共享的数据,以此来达到与全局资源管理器相同的效果。
● 所有任务访问共享数据时,采用乐观并发控制方法。
共享调度器也存在不足。例如,当某一资源被不同任务同时访问时容易产生冲突,访问的任务越多时,冲突次数就会越多,冲突次数越高调度器的性能下降越快,这将影响调度器的工作效率和工作性能。
YARN中自己总结的几个关键点的更多相关文章
- Hadoop YARN中内存的设置
在YARN中,资源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离.R ...
- Yarn中的几种状态机
1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示.什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移 ...
- 【原创】大叔经验分享(21)yarn中查看每个应用实时占用的内存和cpu资源
在yarn中的application详情页面 http://resourcemanager/cluster/app/$applicationId 或者通过application命令 yarn appl ...
- Yarn中几个专用名称
1. ResourceManager(RM) RM是一个全局的资源管理器,负责整个系统的资源管理和分配.它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Appli ...
- YARN 中的应用程序提交
YARN 中的应用程序提交 本节讨论在应用程序提交到 YARN 集群时,ResourceManager.ApplicationMaster.NodeManagers 和容器如何相互交互.下图显示了一个 ...
- YARN中的失败分析
YARN中的失败分析 对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败任务.application master.节点管理器.资源管理器 1. 任务运行失败 任务运行失败类似于 ...
- Guava com.google.common.base.Stopwatch Spark程序在yarn中 MethodNotFound
今天在公司提交一个Spark 读取hive中的数据,写入JanusGraph 的app,自己本地调试没有问题,放入环境中提交到yarn 中时,发现app 跑不起. yarn 中日志,也比较明显,app ...
- Spark On Yarn中spark.yarn.jar属性的使用
今天在测试spark-sql运行在yarn上的过程中,无意间从日志中发现了一个问题: spark-sql --master yarn // :: INFO Client: Requesting a n ...
- YARN中FIFO、Capacity以及Fari调度器的详细介绍
(1)FIFO Scheduler 将所有的Applications放到队列中,先按照作业的优先级高低.再按照到达时间的先后,为每个app分配资源.如果第一个app需要的资源被满足了,如果还剩下了资源 ...
随机推荐
- Java总结篇系列:Java String
String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. 1 ...
- 基于吉日嘎拉的通用权限管理WebForm版扩展:字典选项管理和缓存管理
关于字典管理,其实就是2个表,一个表记录字典和对应表,另一个表记录字典内容.我这里改名为字典选项,其实是一个意思.直接上图: 这里的字典选项是分子系统的,每个子系统可以有自己的单独字典,方便管理.但是 ...
- C++: DataGridView::DataSource
#pragma once #include "Form2.h" namespace cdemo { using namespace System; using namespace ...
- ArrayList和LinkedList的区别
简单的说,ArrayList是顺序存储,而LinkedList是链式存储.
- 泛函编程(30)-泛函IO:Free Monad-Monad生产线
在上节我们介绍了Trampoline.它主要是为了解决堆栈溢出(StackOverflow)错误而设计的.Trampoline类型是一种数据结构,它的设计思路是以heap换stack:对应传统递归算法 ...
- loadrunner录制回放常见问题及解决办法
1.录制错误 1)录制本机 WebTours 或录制本地网站无法打开 当 使 用 Vista 以 后 的 操 作 系 统 时 , 会 出 现 该 问 题 . 这 是 由 于 在 本 地Wi ...
- IO复用_epoll函数
由于poll()和select()的局限,2.6内核以上引用了event poll机制(就是说的epoll),虽然比前2个实现复杂得多,epoll解决了它们共有的基本性能问题,并增加了新的特性. po ...
- Tab切换类型
Tab切换类型 点击Tab 滑过Tab 延迟Tab CSS样式 ; ; list-style:none; font-size:12px;} .notice{width:298px; height:98 ...
- 【追寻javascript高手之路02】变量、作用域知多少?
前言 本来想把这个与上篇博客写到一起的,但是考虑到是两个知识点还是分开算了,于是我们继续今天的学习吧. 基本类型与引用类型 ECMAScript的的变量有两种类型: 基本类型(值类型):简单数据段 引 ...
- Eclipse开发STM32出现找不到函数的情况的解决方法
问题表现: 在明明引用了头文件的情况下,出现“undefined reference to `…'”的情况,例如下图: 解决方法: 在左边的数据目录定位到“system\src\stm32f0-st ...