美文网首页
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