YARN分布式程序的编写Word文档下载推荐.docx
- 文档编号:15357937
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:27.54KB
YARN分布式程序的编写Word文档下载推荐.docx
《YARN分布式程序的编写Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《YARN分布式程序的编写Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
作为启动container的一部分,ApplicationMaster需要指定ContainerLaunchContext,ContainerLaunchContext和ApplicationSubmissionContext相似,包括了一些启动时需要的信息,诸如:
命令行命令、环境变量等。
一旦任务完成,ApplicationMaster会通过AMRMProtocol:
finishApplicationMaster来通知ResourceManager任务完成。
与此同时,client可以通过查询ResourceManager来获取application的状态信息,或者如果ApplicationMaster支持也可以直接从ApplicationMaster查询信息。
如果需要,client可以通过ClientRMProtocol:
forceKillApplication来kill掉application。
接口
你可能关心的接口包括以下这些:
ClientRMProtocol--Client<
-->
ResourceManager
这是client和ResourceManager通讯来启动一个新的application(这个application是ApplicationMaster等)的协议,可以通过这个协议查询或killapplication。
例如:
ajob-client将使用这个协议。
AMRMProtocol--ApplicationMaster<
ResourceManager
这个协议用于ApplicationManager向ResourceManager注册和注销自己,同时包括从Scheduler申请资源来完成任务。
ContainerManager-ApplicationMaster<
NodeManager
这个协议用于ApplicationMaster和NodeManager来开始或停止一个container,或者获取container的状态更新信息。
写一个简单的Yarn应用
写一个简单的client
第一步是client连接到ResourceManager或者更具体一点说,连接到ResourceManager的ApplicationManager(AsM)接口
[html]
viewplaincopy
1.ClientRMProtocol
applicationsManager;
2.
YarnConfiguration
yarnConf
=
new
YarnConfiguration(conf);
3.
InetSocketAddress
rmAddress
4.
NetUtils.createSocketAddr(yarnConf.get(
5.
YarnConfiguration.RM_ADDRESS,
6.
YarnConfiguration.DEFAULT_RM_ADDRESS));
7.
LOG.info("
Connecting
to
ResourceManager
at
"
+
rmAddress);
8.
configuration
appsManagerServerConf
Configuration(conf);
9.
appsManagerServerConf.setClass(
10.
YarnConfiguration.YARN_SECURITY_INFO,
11.
ClientRMSecurityInfo.class,
SecurityInfo.class);
12.
applicationsManager
((ClientRMProtocol)
rpc.getProxy(
13.
ClientRMProtocol.class,
rmAddress,
appsManagerServerConf));
一旦ASM的handler获得后,client需要从ResourceManager获取一个ApplicationId
[java]
1.GetNewApplicationRequest
request
Records.newRecord(GetNewApplicationRequest.class);
GetNewApplicationResponse
response
applicationsManager.getNewApplication(request);
Got
ApplicationId="
response.getApplicationId());
从ASM返回的response也包含一些整个集群的信息,诸如minimum/maximum资源容量等。
有了这些信息才能够适当的设置container的一些参数使得ApplicationMaster能够在这个container上运行。
可以参考GetNewApplicationResponse获得更多细节信息。
client的一个关键工作就是设置ApplicationSubmissionContext,使得ResourceManager能够启动ApplicationMaster。
client需要设置下面的一些context:
∙ApplicationInfo:
id和name
∙队列(Queue),优先级信息(Priorityinfo):
application将被提交到的队列,以及application被设定的优先级
∙User:
提交application的用户
∙ContainerLaunchContext:
ApplicationMaster被启动的container的一些信息。
ContainerLaunchContext正如前面所描述的,定义了启动ApplicationMaster需要的信息包括localresource(binary,jars,files等等),securitytokens,environmentsetting(CLASSPATH等)和被执行的command。
1.//
Create
a
ApplicationSubmissionContext
appContext
Records.newRecord(ApplicationSubmissionContext.class);
//
set
the
ApplicationId
appContext.setApplicationId(appId);
application
name
appContext.setApplicationName(appName);
container
launch
context
for
AM'
s
ContainerLaunchContext
amContainer
Records.newRecord(ContainerLaunchContext.class);
Define
local
resources
required
14.
Map<
String,
LocalResource>
localResources
15.
HashMap<
();
16.
Lets
assume
jar
we
need
our
ApplicationMaster
is
available
in
17.
HDFS
certain
known
path
us
and
want
make
it
18.
launched
19.
Path
jarPath;
<
-
file
20.
FileStatus
jarStatus
fs.getFileStatus(jarPath);
21.
LocalResource
amJarRsrc
Records.newRecord(LocalResource.class);
22.
Set
type
of
resource
or
archive
23.
archives
are
untarred
destination
by
framework
24.
amJarRsrc.setType(LocalResourceType.FILE);
25.
visibility
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- YARN 分布式 程序 编写
![提示](https://static.bdocx.com/images/bang_tan.gif)