Yarn 应用开发流程

1 概况

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是Hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度。YARN是一个高速发展中的资源管理与调度平台,目前还不是很完善,当前只支持CPU内存的分配。

作为资源调度器,YARN支持如下几个资源调度语义:

•获取指定节点的特定资源量;
•获取指定机架上的特定资源量;
•支持资源黑名单(添加/删除);
•要求某些应用归还指定的资源,通常用于抢占场景。

YARN目前不支持(或者说不完全支持)的调度语义有:
•获取任意节点上的特定资源量;
•获取任意机架上的特定资源量;
•获取一组或几组符合特定规则的资源量;
•细粒度资源分配,如获取主频大于2.4G的CPU等;
•动态调整资源容器容量(对长应用比较重要)。

YARN上的应用按其运行的生命周期长短,可以分为长应用和短应用,短应用通常是分析作业,作业从提交到完成,所耗的时间是有限的,作业完成后,其占用的资源就会被释放,归还给YARN进行再次分配。长应用通常是一些服务,应用启动后除非意外或人为终止,将一直运行下去:如Spark或者Storm应用。长应用通常长期占用集群上的一些资源,且运行期间对资源的需求也时常变化,因此,动态调整资源对长应用来说比较重要。目前,YARN对长应用的支持还不是很好,从社区讨论来看,受hortonworks的Hoya项目推动,YARN在2.20版本后加强了对长应用的支持。

2 应用开发

2.1 概述

YARN的应用开发主要过程如下:

这里写图片描述

图2.1 YARN应用开发流程

YARN主要由ResourceManager和NodeManager组成,ResourceManager负责资源的管理与分配,NodeManager则负责具体资源的隔离。YARN中,资源使用container进行封装。

用户在YARN上开发应用时,需要实现如下三个模块:

•Application Client: 应用客户端用于将应用提交到YARN上,使应用运行在YARN上,同时,监控应用的运行状态,控制应用的运行;

•Application Master: AM负责整个应用的运行控制,包括向YARN注册应用、申请资源、启动容器等,应用的实际工作在容器中进行;

•Application Worker: 应用的实际工作,并不是所有的应用都需要编写worker。NodeManager启动AM发送过来的容器,容器内部封装了该应用worker运行所需的资源和启动命令。

实现上述模块,涉及如下三个RPC协议:

•ApplicationClientProtocol: Client-RM之间的协议,主要用于应用的提交;
•ApplicationMasterProtocol: AM-RM之间的协议,AM通过该协议向RM注册并申请资源;
•ContainerManagementProtocol: AM-NM之间的协议,AM通过该协议控制NM启动容器。

上述协议的定义在hadoop-yarn-api工程下。

从业务的角度看,一个应用需要分两部分进行开发,一个是接入YARN平台,实现上述3个协议,通过YARN实现对集群资源的访问和利用;另一个是业务功能的实现,这个与YARN本身没有太大关系。下面主要阐述如何将一个应用接入YARN平台。

2.2 客户端开发

客户端开发流程如图2.2所示:

这里写图片描述

图2.2 YARN应用程序客户端开发

从上图可以看出,客户端的主要作用是提交(部署)应用和监控应用运行两个部分。

2.2.1 提交应用

提交应用涉及ApplicationClientProtocol协议中的两个方法:

 GetNewApplicationResponse getNewApplication(GetNewApplicationRequest request)
 SubmitApplicationResponse submitApplication(SubmitApplicationRequest request)

具体步骤如下:

1.客户端通过getNewApplication方法从RM上获取应用ID;

2.客户端将应用相关的运行配置封装到ApplicationSubmissionContext中,通过submitApplication方法将应用提交到RM上;

3.RM根据ApplicationSubmissionContext上封装的内容启动AM;

4.客户端通过AM或RM获取应用的运行状态,并控制应用的运行过程。

通过getNewApplication可从RM上获取全局唯一的应用ID和最大可申请的资源量(内存和虚拟CPU核数),如下所示:

这里写图片描述

图2.3 getNewApplication方法的输入输出

在获取应用程序ID后,客户端封装应用相关的配置到ApplicationSubmissionContext中,通过submitApplication方法提交到RM上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值