2016-01-08 53 views
4

在客户端提交appContext之后,是否可以从YARN客户端获取各种容器ID和主机名?我想这意味着在容器分配之后,信息可以传回客户端?来自客户端的YARN ContainerIDs

如果这不可行,RM Web Interface是否提供此信息?

回答

0

比较难看,但可以通过一系列的URL请求到ResourceManager,节点管理器来完成,以及各种ContainerLog网址:

# Resource Manager Info for Given Application 
curl http://RM:PORT/ws/v1/cluster/apps/<app_id> 

amHostHttpAddress = data['app']['amHostHttpAddress'] 

# List containers with id, nodeId, containerLogsLink, etc 
curl http://<amHostHttpAddress>/ws/v1/node/containers 

# stdout/stderr for a specific container 
curl http://<containerLogsLink>/stdout/?start=0" 
curl http://<containerLogsLink>/stderr/?start=0" 

这种方法可行,但大概应当纱JAVA这样做的更清洁的方式API

1

YARN CLI可以从应用程序尝试ID中获取容器列表。您可以按照以下步骤获取容器列表。

  • 第1步:从应用程序ID

    从纱线应用程序ID应用程序尝试的列表,你可以得到应用程序尝试的列表,使用以下命令:

    yarn applicationattempt -list <Application ID> 
    

    此命令的描述如下:

    -list <Application ID> List application attempts for application. 
    

    例如

    yarn applicationattempt -list application_1452267331813_0009 
    
  • 第2步:使用应用程序尝试ID

    你的应用程序尝试列表后,为每个应用程序的尝试,你可以得到的容器列表获取容器,使用下面的命令:

    yarn container -list <Application Attempt ID> 
    

    此命令的描述如下:

    -list <Application Attempt ID> List containers for application attempt. 
    

    对于例如为:

    yarn container -list appattempt_1452267331813_0009_000001