YARN简介

YARN简介YARN(YetAnotherResourceNegotiator)是hadoop2.0提供的新功能,它是一个集群资源调度管理的软件,其产生是为了更好的管理集群资源,突破hadoop1.0集群管理方式的缺陷。先看原来方式的缺陷hadoop最初采取的集群…

大家好,欢迎来到IT知识分享网。

YARN(Yet Another Resource Negotiator)是hadoop2.0提供的新功能,它是一个集群资源调度管理的软件,其产生是为了更好的管理集群资源,突破hadoop1.0集群管理方式的缺陷。

先看原来方式的缺陷

hadoop最初采取的集群管理方式是这样的:
一个JobTracker进程,主要负责协调Client提交过来的Job
[ 1 ] ^{[1]}
,分配要在TaskTracker上运行的task。具体的,要负责以下两点功能:

  1. 管理集群中的计算资源,这涉及到维护活动节点列表、可用和占用的 map 和 reduce slots
    [ 2 ] ^{[2]}
    列表,以及依据所选的调度策略将可用的slot分配给合适的task。
  2. 协调在集群上运行的所有任务,这涉及到指导 TaskTracker 启动 map 和 reduce task,监视任务的执行,重新启动失败的任务,推测性地运行缓慢的任务,计算作业计数器值的总和,等等。

多个TaskTracker进程,负责执行JobTracker分配过来的任务,并向JobTracher发送报告。

[1]:一个Job分多个Task,Task分为map task和reduce task两种,map task只能在map slot上面运行,reduce task只能在reduce slot上运行。
[2]:集群管理员会把从属节点上的计算资源分解为固定数量的 map 和 reduce slot(插槽),也就是说可用的slot代表集群可用的计算资源。

在这里插入图片描述

MRv1集群资源管理方式主要有以下三个缺点:

  1. 当集群中有 5,000 个节点和 40,000 个任务同时运行时,JobTracker 必须不断跟踪数千个 TaskTracker、数百个Job作业,以及数万个 map 和 reduce task。这就会显现出由单个 JobTracker 导致的可伸缩性瓶颈。
  2. 每个从属节点上的计算资源由集群管理员分解为固定数量的 map 和 reduce slot,这些 slot 不可替代。如当map slot占满后,即使有空闲的reduce solt也无法运行更多的map任务,造成资源浪费。
  3. 这种集群管理方式仅适用运行 MapReduce
    [ 3 ] ^{[3]}
    作业,无法处理使用其他编程模型编写的作业程序。而随着替代性的编程模型(比如 Apache Giraph 所提供的图形处理)的到来,除 MapReduce 外,越来越需要为在同一个集群上运行其他编程模型提供支持。

[3]:MapReduce(简称MR)是Google推广的一种编程模型,它对以高度并行和可扩展的方式处理大数据集很有用。采用MR编程模型的开源实现很多,其中Hadoop MapReduce是最成功的。


为了解决以上问题,产生了YARN。

上面已经提到,JobTracker负责两点功能(集群资源管理和任务协调)。
YARN设计中,将这两点分开,让两种进程完成。

  • 一个全局进程叫ResourceManager(RM)
    负责跟踪集群中的活动节点和可用资源,并将它们分配给任务。

  • 一种进程叫ApplicationMaster(AM)
    这是一个专用的、短暂的进程(每一个应用作业会产生一个AM进程,此进程会随应用结束而终止),用来控制该作业中的任务的执行。这个进程由从节点上运行的 TaskTracker 启动。

  • 此外原来的TaskTracker进程现在叫做NodeManager(NM)。
    NodeManager 是 TaskTracker 的一种更加普通和高效的版本。没有固定数量的 map 和 reduce slots,NodeManager 拥有许多动态创建的资源容器(Containers)。容器的大小取决于它所包含的资源量,比如内存、CPU等。

ApplicationMaster 可在容器内运行任何类型的任务。例如,MapReduce ApplicationMaster利用一个容器执行来 map 或 reduce task,而 Giraph ApplicationMaster利用一个容器来执行Giraph task。还可以实现一个自定义的 ApplicationMaster 来运行特定的任务,进而发明出一种全新的分布式应用程序框架。

(可以查阅 Apache Twill,它旨在简化 YARN 之上的分布式应用程序的编写。)

这样YARN不再只适用于MR框架的作业,而可以适用于任何分布式框架作业,只要这个框架实现了相应的ApplicationMaster。

在这里插入图片描述

在YARN上提交一个作业的过程:

ResourceManager 使用一个可插拔的 Scheduler。Scheduler 仅执行调度,它仅管理谁在何时获取容器资源。

在 ResourceManager 接受一个新应用程序提交时,Scheduler首先选择将用来运行 ApplicationMaster 的容器。

然后相应的NodeManager会在容器中启动 ApplicationMaster,ApplicationMaster将负责此应用程序的整个生命周期。

NodeManager会监视容器中的资源使用情况,举例而言,如果一个容器消耗的内存比最初分配的更多,它会结束该容器。

NodeManager还会监视ApplicationMaster的健康状况,若ApplicationMaster失败,ResourceManager可在一个新容器中重新启动它。

ApplicationMaster会监视容器中自己应用的task的执行情况,若task失败则重新要求NodeManager去执行。

应用程序完成后,ApplicationMaster 会关闭自己并释放自己的容器。

此笔记主要参考IBM资料库:
https://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32448.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信