本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位。
我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、米脂ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的米脂网站制作公司
本篇将对 Yarn Application 编写流程进行介绍。将一个新的应用程序运行到 Yarn 上,主要编写两个组件 Client
和 ApplicationMaster
,组件的具体实现案例将在后两篇文章中介绍。
(实际使用中,我们并不需要实现一个 Yarn Application,直接将任务提交到 MapReduce、Spark、Hive、Flink 等框架上,再由这些框架提交任务即可,这些框架也可以被视为一种特定的 Yarn Application。)
其中,Client 主要用于提交应用程序和管理应用程序,ApplicationMaster 负责实现应用程序的任务切分、调度、监控等功能。
YarnClient
;YarnClient
创建 Application
;ApplicationSubmissionContext
所需内容:
Application
。AMRMClientAsync
,用于与 ResourceManager
通信;NMClientAsync
,用于与 NodeManager
通信;ResourceManager
注册,之后会向 ResourceManager
发送心跳;ResourceManager
申请 Container
。Container
中运行 taskHadoop 自带的 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 结构设计与实现原理》第四章