Apache Hadoop(5)---YARN调度框架

栏目: 编程工具 · 发布时间: 4年前

内容简介: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运行在每个节点上,负责启动并监控容器、资源。

步骤

Apache Hadoop(5)---YARN调度框架

在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调度框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java EE WEB开发与项目实战

Java EE WEB开发与项目实战

李俊青 / 华中科技大学出版社 / 2011-11 / 59.80元

本书采用工程案例的形式,将日常Java EE项目开发所涉及的技术要点进行了解析,系统介绍了Apache的安装、Tomcat的安装、虚拟主机的配置、开发工具的搭配使用、验证码的使用、过滤器的使用、密码的加密与解密、JavaMail邮件发送、Web在线编辑器的使用、文件上传、数据库连接池、Ajax与Servlet的身份认证、Struts框架的应用、JSF框架的应用、Spring框架的应用、Hibern......一起来看看 《Java EE WEB开发与项目实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具