内容简介:YARN (Yet Another Resource Negotiator) 是Apache Hadoop中的集群资源管理系统,负责收集集群中各个节点资源情况并响应资源分配请求,根据不同的策略分配相应的节点资源。YARN 在Hadoop 2中被引入,在此之前,资源管理系统MapReduce 1与Hadoop平台紧耦合,且设计上对节点支持数量较低。在Hadoop2中,资源管理系统被重构并抽象,独立成一个通用的资源管理系统,支持其他大数据计算平台接入,如如日中天的Spark就可以运行在YARN上。此外,重新设计
YARN (Yet Another Resource Negotiator) 是Apache Hadoop中的集群资源管理系统,负责收集集群中各个节点资源情况并响应资源分配请求,根据不同的策略分配相应的节点资源。
YARN 在Hadoop 2中被引入,在此之前,资源管理系统MapReduce 1与Hadoop平台紧耦合,且设计上对节点支持数量较低。在Hadoop2中,资源管理系统被重构并抽象,独立成一个通用的资源管理系统,支持其他大数据计算平台接入,如如日中天的Spark就可以运行在YARN上。此外,重新设计的YARN开始支持更多的节点和任务。
在YARN中,有两种组件Resource Manager和Node Manager。Resource Manager是YARN的管理中心,负责汇总所有节点的资源信息并响应资源分配请求;Node Manager运行在每个节点上,负责启动并监控容器、资源。
步骤
在Hadoop中,一个MapReduce任务的执行步骤如下:
首先,客户端与Resource Manager通信,请求启动一个任务;
Resource Manager选择一个节点,然后启动该任务对应的Application Master;
Application Master请求输入文件的block信息,然后按照block个数,按照本地性策略向Resource Manager请求资源;
获取到资源后,请求响应的Node Manager,启动mapper任务;
Application Master监控任务执行情况,当一定比例的mapper任务结束后,请求设定数量的资源以启动Reducer;
监控任务执行,在完成后释放资源。
MapReduce中数据通信量较大,为了尽可能的减少数据传输,MapReduce采取了本地性策略,即计算资源离数据尽可能的尽,YARN会根据AM的请求,选择合适的节点。
YANR的资源分配比较灵活,可以在启动时一次性申请所有资源,也可以在运行时动态的申请资源,Spark采用的是前者,并且复用了资源,而MapReduce采用的则是后一种,两阶段申请资源,且用完后就释放。
调度策略
在真实场景下的集群,通常不会拥有无限的资源,那么在资源有限的情况下如何去管理和分配这些资源。不同的业务场景下,倾向不同,很难说有一个策略适合所有的场景,所以YARN提供了一些调度策略,以便在特定的场景下采取最合适的策略。
FIFO
固定思议,FIFO策略是简单的策略,它采取了先进先出的模式,当前一个任务的资源得到满足后再开始处理后一个任务的资源请求,而且对资源的使用没有限制。这种策略下,能得到最大的资源使用率(前提是即便获取到部分资源,任务也能立即开始执行),但是也带来了一些弊端,例如当一个大任务占用了所有资源后,小任务的资源请求无法得到满足,需要等待大任务完成才能开始。
Capacity
为了缓解FIFO策略的小任务等待时间过长问题,提出了Capacity策略,即将全部资源划分成若干队列,每个队列拥有一定的资源,大任务执行时仍然会预留一定的资源给小任务。通过预留资源的形式,缓解了小任务的延迟,但是由于资源没有充分利用,降低了一定的资源使用率。
这种策略也可以用于划分优先级,即预留一些资源给高优先级任务。
Fair Schedulers
在多租户场景下,如何保证公平和保持高资源使用率。Fair Schedulers就是为了解决这样的问题,它像一个弹性的Capacity策略,当集群比较空闲时,任务可以获得全部的资源,但是当下一个任务来临时,YARN会分出一半的资源分配给新任务,默认情况下,资源不可剥夺,所以存在一定的延迟,是一种最终公平性。
相比较于Capacity策略,Fair Schedulers无需预留资源。
延迟调度
延迟调度不是一个单独的策略,而是独立于具体策略的一个优化。考虑到在实际情况下,任务的本地性约束可能无法立即满足,但是相关节点能在短时间内空闲,这种情况下,等待更合适节点资源更加合理,所以YARN会等待一定时间,等待相关资源被释放,如果超时后仍然未获得资源,才分配其他的节点。
容错
在大量节点的集群中,出错时有发生,或节点本身出现故障,或网络故障,抑或是任务编写有bug,异常退出。为了减少异常带来的问题,YARN根据不同类型的异常提供了不同的恢复方式。
Task Failure
每一个具体的任务由相应的Application Master负责监控,所以当AM发现容器运行异常时(超时机制、异常退出),会请求新的节点,然后重新启动相关的子任务,当失败次数超过一定限制时,认为是代码编写错误,不再重试。
Application Master Failure
Resource Manager通过超时机制来检测AM的运行情况,当AM出现异常时,Resource Manager会启动新的AM,当该AM启动后,根据job history获取子任务的执行情况,避免重新运行这些任务。
Node Manager Failure
节点故障通常时通过超时机制来检测的,在节点出现故障后,会带来子任务和AM的失败,直接通过上述两种容错机制即可解决,不需要其他的处理。
当节点故障超过一定次数时,YARN会选择排除该高故障节点。
Resource Manager Failure
RM是YARN中最上层的组件,没有其他组件来监控它,所以Resource Manager的容错需要靠集群来解决。通过组建Resource Manager集群,一活多备的形式来达成高可用,当活跃RM失败时,其他的RM迅速接管,由于RM故障后集群状态信息会丢失,所以该部分数据是存储在可靠分布式存储上的(ZK、HDFS,主要是任务元信息)。
当新的RM启用后,由于不知道AM的状态,所以会重启所有的AM,然后再由AM去检测具体的子任务执行情况。
以上所述就是小编给大家介绍的《Apache Hadoop(5)---YARN调度框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Chinese Authoritarianism in the Information Age
Routledge / 2018-2-13 / GBP 115.00
This book examines information and public opinion control by the authoritarian state in response to popular access to information and upgraded political communication channels among the citizens in co......一起来看看 《Chinese Authoritarianism in the Information Age》 这本书的介绍吧!