美文网首页
YARN 权威指南 NOTE2 - YARN应用编写

YARN 权威指南 NOTE2 - YARN应用编写

作者: raincoffee | 来源:发表于2018-05-28 22:29 被阅读95次

    HADOOP YARN 应用程序范例

    主要为《HADOOP YARN 权威指南》阅读笔记。涉及的内容为第九章的内容。同时思考Xlearning 本身的实现也是如此。

    为了说明怎样实现YARN程序,我们将把创建一个YARN程序的流程走一遍。

    1.YARN Client

    我们需要实现yarn 客户端。首先来看看YARN client究竟要做些什么?

    YARN客户端是一个有main函数,可以运行的普通Java对象。不需要继承自某个类或者实现某个接口。在他执行过程中,首先要实例化一个YarnConfiguration 对象,来获取相关YARN环境信息。YARNConfiguration对象会到类路径中去找yarn-default.xml 和yarn-site.xml

    然后以YarnConfiguration对象为参数,创建一个YarnClient的对象。这个YarnClient对象完成Yarn客户端要做的大部分工作。

    • 实例化一个YarnClient对象

    • 根据YarnConfiguration对象进行初始化

    • 启动YarnClient

    • 获取Yarn集群的参数

    • 获取Yarn节点的报告

    • 获取队列信息

    • 获取用户的访问控制列表的信息

    • 创建客户端应用程序

    • 向Yarn ResourceManager提交应用程序

    • 获取应用程序的状态报告

    除了提供这些核心的功能,Yarn客户端还要为应用程序做一些准备工作,传递环境变量和应用程序需要的资源。这些资源包括应用依赖所需要的jar包,可以被yarn自动解压的存档文件。Yarn客户端还需要创建提交应用和启动AM的container所需要的上下文。

    强烈建议看一下提供的Jboss的yarn程序例子。在此暂时不做说明。

    2.ApplicationMaster

    上一节我们创建了客户端,负责yarn程序的提交和监控。本章节我们来关注AM的实现。一个新创建的应用程序首先需要向ResourceManager注册自己。然后以container的形式向RM请求资源。请求到资源以后跟NodeManager通信,启动container,监控container的运行。

    跟Client一样,AM也是一个带Main的Java类。同样,Am的实现也从定义全局变量和main函数开始。

    跟Client一样,AM也依次执行构造函数,初始化,运行的流程。在构造函数中,先创建一个YarnConfiguration对象,这个对象包含了AM本身的container对应的yarn的环境设置。构造函数中还定义了命令行参数。

    AM把container的环境,启动脚本,本地资源设置都加到ContainerLaunchContext中,然后吧这个对象提交给该container所在的NodeManager。这些工作完成后,NodeManager就启动这个container。

    image

    3. 总结

    YARN应用程序的开发包括client的开发和AM的开发。如本章所述,创建一个非MapReduce的应用,需要一定的代码量。但是大多数代码是可以复用的。

    一个 Jboss yarn application demo见https://github.com/neulyp/yarn-book

    相关文章

      网友评论

          本文标题:YARN 权威指南 NOTE2 - YARN应用编写

          本文链接:https://www.haomeiwen.com/subject/stvnjftx.html