如何编写YARN应用程序

如何编写YARN应用程序,第1张

主要编写步骤

(1) 涉及到的RPC协议

通常而言,编写一个YARN Appcalition涉及到3个RPC协议,分别为:

1) ClientRMProtocol(Client<–>ResourceManager)

Client通过该协议将应用程序提交到ResourceManager上、查询应用程序的运行状态或者杀死应用程序等。

2) AMRMProtocol(ApplicationMaster<–>ResourceManager)

ApplicationMaster使用该协议向ResourceManager注册、申请资源以运行自己的各个任务。

3) ContainerManager(ApplicationMaster<–>NodeManager)

ApplicationMaster使用该协议要求NodeManager启动/撤销Container,或者获取各个container的运行状态。

(2)客户端编写流程

步骤1 Client通过RPC函数ClientRMProtocol#getNewApplication从ResourceManager中获取唯一的application ID

步骤2 Client通过RPC函数ClientRMProtocol#submitApplication将ApplicationMaster提交到ResourceManager上。

(3)ApplicationMaster编写流程

步骤1 ApplicationMaster通过RPC函数AMRMProtocol#registerApplicationMaster向ResourceManager注册。

步骤2 ApplicationMaster通过RPC函数AMRMProtocol#allocate向ResourceManager申请资源(以Container形式表示)。

步骤3 ApplicationMaster通过RPC函数ContainerManager#startContainer要求对应的NodeManager启动Container。

ApplicationMaster重复步骤2~3,直到所有任务运行成功。

另外,在应用程序运行过程中,用户可使用ClientRMProtocol#getApplicationReport 查询应用程序运行状态,也可以使用ClientRMProtocol#forceKillApplication将应用程序杀死。

Yarn 和 MapReduce (MR) 都是 Hadoop 的组件,其中 Yarn 是一个资源管理器,而 MR 是一个分布式计算框架。下面分别介绍它们的编程过程和关系:

Yarn 编程过程:

1. 编写 Yarn 应用程序的客户端代码,该代码通常由一个提交 Yarn 应用程序的命令和一些相关的配置参数组成。

2. 在客户端代码中,需要定义 Yarn 应用程序所需要的资源(如 CPU、内存、磁盘等)以及执行的任务数等。

3. 通过客户端代码将应用程序提交给 Yarn,由 Yarn 根据资源需求和调度策略来分配资源,并在集群中启动应用程序的各个任务。

MR 编程过程:

1. 编写 Map 函数和 Reduce 函数。

2. 将数据分割成多个块,并在多个计算节点上开启 Map 任务来处理每个块的数据。

3. Reduce 任务将 Map 产生的中间输出结果进行合并,生成最终的结果。

Yarn 和 MR 的关系:Yarn 提供了一个资源管理器和调度器,可以将多个 MR 任务分配到不同的计算节点上执行,从而实现了分布式计算的功能。由于 MR 常常需要处理大规模的数据,因此需要 Yarn 这样的分布式计算平台来提供资源调度和管理的支持。因此,两者是密不可分的关系。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11838030.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存