2016-01-08 54 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