• 【深入浅出 Yarn 架构与实现】3-1 Yarn Application 流程与编写方法


    本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位。

    一、简介#

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

    一)Application 的提交和启动流程#

    image.png

    二)各服务间涉及的 protocol#

    image.png

    二、组件实现流程#

    一)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 的完整内容。
    image.png

    三、小结#

    本篇带大家了解了 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 结构设计与实现原理》第四章

  • 相关阅读:
    Docker数据存储&容器之间数据共享
    Linux下搭建nginx服务器
    Xilinx FFT使用说明和测试
    简单了解 TiDB 架构
    java计算机毕业设计在线问答平台源码+系统+mysql数据库+lw文档+部署
    【前端开发】JS Vue React中的通用递归函数
    从零开始学JAVA(02):基本知识、基本数据类型、运算符、转义符
    sudo相关漏洞CVE-2019-18634、CVE-2019-14287
    面了个 Java 实习生,小伙很优秀!
    Git分布式版本控制工具(三)
  • 原文地址:https://www.cnblogs.com/shuofxz/p/16890029.html