一、icode9简介
本篇将对 Yarn Application 编写流程进行介绍。将一个新的应用程序运行到 Yarn 上,主要编写两个组件 Client
和 ApplicationMaster
,组件的具体实现案例将在后两篇文章中介绍。
(实际使用中,我们并不需要实现一个 Yarn Application,直接将任务提交到 MapReduce、Spark、Hive、Flink 等框架上,再由这些框架提交任务即可,这些框架也可以被视为一种特定的 Yarn Application。)
其中,Client 主要用于提交应用程序和管理应用程序,ApplicationMaster 负责实现应用程序的任务切分、调度、监控等功能。
一)Application 的提交和启动流程
二)各服务间涉及的 protocol
二、组件实现流程
一)Client 实现
- 创建并启动
YarnClient
; - 通过
YarnClient
创建Application
; - 完善
ApplicationSubmissionContext
所需内容:- 设置 application name;
- 设置 ContainerLaunchContext;(包含 app master jar)
- 设置优先级、队列等
- 提交
Application
。
二)ApplicationMaster实现
- 创建并启动
AMRMClientAsync
,用于与ResourceManager
通信; - 创建并启动
NMClientAsync
,用于与NodeManager
通信; - 向
ResourceManager
注册,之后会向ResourceManager
发送心跳; - 向
ResourceManager
申请Container
。 - 在
Container
中运行 task
三)Hadoop 实现案例
Hadoop 自带的 hadoop-yarn-applications-distributedshell
是个很好的学习案例,可以参考其中的 Client.java
和 ApplicationMaster.java
两个类进行学习。DistributedShell
可以执行用户指定的 Shell 命令或脚本,包含了编写一个 YARN Application 的完整内容。
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293363.html