本篇学习 Yarn Application 编写办法,将带你更分明的理解一个工作是如何提交到 Yarn,在运行中的交互和工作进行的过程。通过理解整个工作的运行流程,帮你更好的了解 Yarn 运作形式,呈现问题时能更好的定位。
一、简介
本篇将对 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 的残缺内容。
三、小结
本篇带大家理解了 Yarn Application 提交和启动流程、组件间波及的通信协议,以及编写 Application 的根本流程。实际上,在 Yarn 上运行不同的框架利用 Hive、Spark、Flink 等就是次要实现 Client 和 Application Master 两个组件。了解了本文的相干常识,再去看其余利用提交过程就会清晰很多。
接下来的两篇讲带大家学习 Client 和 Application Master 具体编写形式。
参考文章:
深刻解析 yarn 架构设计与技术实现 -yarn 利用程序设计办法
Hadoop YARN 原理 – 编写 YARN Application
Hadoop DOC: Writing YARN Applications
github app-on-yarn-demo
《Hadoop 技术底细 – 深刻解析 Yarn 结构设计与实现原理》第四章
https://liebing.org.cn/collections/
下面 Hadoop YARN 原理 – 编写 YARN Application 这篇文章的作者看起来还挺厉害的,21 年求职,斩获一堆 offer。博客编写也不错,有思考有深度,除了编程文章,还会有面试等思考,值得学习。