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。
image3. 总结
YARN应用程序的开发包括client的开发和AM的开发。如本章所述,创建一个非MapReduce的应用,需要一定的代码量。但是大多数代码是可以复用的。
一个 Jboss yarn application demo见https://github.com/neulyp/yarn-book
网友评论