《Hadoop权威指南:大数据的存储与分析》—4 关于YARN

举报
清华大学出版社 发表于 2019/10/12 17:17:03 2019/10/12
【摘要】 本节书摘来自清华大学出版社《Hadoop权威指南:大数据的存储与分析》一书中第四章,第4.1.1节,作者是Tom White , 王 海 华 东 刘 喻 吕粤海 译。

4

                                                                                         

关于YARN

 

 

 

Apache YARN(Yet Another Resource Negotiator的缩写)Hadoop的集群资源管理系统。YARN被引入Hadoop 2,最初是为了改善MapReduce的实现,但它具有足够的通用性,同样可以支持其他的分布式计算模式。

YARN提供请求和使用集群资源的API,但这些API很少直接用于用户代码。相反,用户代码中用的是分布式计算框架提供的更高层API,这些API建立在YARN之上且向用户隐藏了资源管理细节。图4-1对此进行了描述,一些分布式计算框架(MapReduceSpark等等)作为YARN应用运行在集群计算层(YARN)和集群存储层(HDFSHBase)上。

image.png

4-1. YARN应用

还有一层应用是建立在图4-1所示的框架之上。如PigHiveCrunch都是运行在MapReduceSparkTez(或三个都可)之上的处理框架,它们不和YARN直接打交道。

本章将介绍YARN的特性,为理解后续第Ⅳ部分关于Hadoop分布式处理框架的相关内容提供基础。


4.1  剖析YARN应用运行机制

YARN通过两类长期运行的守护进程提供自己的核心服务:管理集群上资源使用的资源管理器(resource manager)、运行在集群中所有节点上且能够启动和监控容器(container)的节点管理器(node manager)。容器用于执行特定应用程序的进程,每个容器都有资源限制(内存、CPU)。一个容器可以是一个Unix进程,也可以是一个Linux cgroup,取决于YARN的配置(详见10.3.3)。图4-2描述了YARN是如何运行一个应用的。

image.png

4-2. YARN应用的运行机制

为了在YARN上运行一个应用,首先,客户端联系资源管理器,要求它运行一个application master进程(4-2中的步骤1)。然后,资源管理器找到一个能够在容器中启动application master的节点管理器(步骤2a2b)[1]。准确地说,application master一旦运行起来后能做些什么依赖于应用本身。有可能是在所处的容器中简单地运行一个计算,并将结果返回给客户端;或是向资源管理器请求更多的容器(步骤3),以用于运行一个分布式计算(步骤4a4b)。后者是MapReduce YARN应用所做的事情,将在7.1节中详细介绍。

注意,从图4-2可看出,YARN本身不会为应用的各部分(客户端、master和进程)彼此间通信提供任何手段。大多数重要的YARN应用使用某种形式的远程通信机制(例如HadoopRPC)来向客户端传递状态更新和返回结果,但是这些通信机制都是专属于各应用的。

4.1.1  资源请求

YARN有一个灵活的资源请求模型。当请求多个容器时,可以指定每个容器需要的计算机资源数量(内存和CPU),还可以指定对容器的本地限制要求。

本地化对于确保分布式数据处理算法高效使用集群带宽[2]非常重要,因此,YARN允许一个应用为所申请的容器指定本地限制。本地限制可用于申请位于指定节点或机架,或集群中任何位置(机架外)的容器。

有时本地限制无法被满足,这种情况下要么不分配资源,或者可选择放松限制。例如,一个节点由于已经运行了别的容器而无法再启动新的容器,这时如果有应用请求该节点,则YARN将尝试在同一机架中的其他节点上启动一个容器,如果还不行,则会尝试集群中的任何一个节点。

通常情况下,当启动一个容器用于处理HDFS数据块(为了在MapReduce中运行一个map任务)时,应用将会向这样的节点申请容器:存储该数据块三个复本的节点,或是存储这些复本的机架中的一个节点。如果都申请失败,则申请集群中的任意节点。

YARN应用可以在运行中的任意时刻提出资源申请。例如,可以在最开始提出所有的请求,或者为了满足不断变化的应用需要,采取更为动态的方式在需要更多资源时提出请求。

Spark采用了上述第一种方式,在集群上启动固定数量的执行器(详见19.6)。另一方面,MapReduce则分两步走,在最开始时申请map任务容器, reduce任务容器的启用则放在后期。同样,如果任何任务出现失败,将会另外申请容器以重新运行失败的任务。





【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。