乐趣区

关于hadoop:深入浅出-Yarn-架构与实现31-Yarn-Application-流程与编写方法

本篇学习 Yarn Application 编写办法,将带你更分明的理解一个工作是如何提交到 Yarn,在运行中的交互和工作进行的过程。通过理解整个工作的运行流程,帮你更好的了解 Yarn 运作形式,呈现问题时能更好的定位。

一、简介

本篇将对 Yarn Application 编写流程进行介绍。将一个新的利用程序运行到 Yarn 上,次要编写两个组件 ClientApplicationMaster,组件的具体实现案例将在后两篇文章中介绍。
(理论应用中,咱们并不需要实现一个 Yarn Application,间接将工作提交到 MapReduce、Spark、Hive、Flink 等框架上,再由这些框架提交工作即可,这些框架也能够被视为一种特定的 Yarn Application。)
其中,Client 次要用于提交应用程序和管理应用程序,ApplicationMaster 负责实现应用程序的工作切分、调度、监控等性能。

一)Application 的提交和启动流程

二)各服务间波及的 protocol

二、组件实现流程

一)Client 实现

  1. 创立并启动 YarnClient;
  2. 通过 YarnClient 创立 Application;
  3. 欠缺 ApplicationSubmissionContext 所需内容:

    1. 设置 application name;
    2. 设置 ContainerLaunchContext;(蕴含 app master jar)
    3. 设置优先级、队列等
  4. 提交 Application

二)ApplicationMaster 实现

  1. 创立并启动 AMRMClientAsync,用于与 ResourceManager 通信;
  2. 创立并启动 NMClientAsync,用于与 NodeManager 通信;
  3. ResourceManager 注册,之后会向 ResourceManager 发送心跳;
  4. ResourceManager 申请 Container
  5. Container 中运行 task

三)Hadoop 实现案例

Hadoop 自带的 hadoop-yarn-applications-distributedshell 是个很好的学习案例,能够参考其中的 Client.javaApplicationMaster.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。博客编写也不错,有思考有深度,除了编程文章,还会有面试等思考,值得学习。

退出移动版