在客戶端提交appContext之後,是否可以從YARN客戶端獲取各種容器ID和主機名?我想這意味着在容器分配之後,信息可以傳回客戶端?來自客戶端的YARN ContainerIDs
如果這不可行,RM Web Interface是否提供此信息?
在客戶端提交appContext之後,是否可以從YARN客戶端獲取各種容器ID和主機名?我想這意味着在容器分配之後,信息可以傳回客戶端?來自客戶端的YARN ContainerIDs
如果這不可行,RM Web Interface是否提供此信息?
比較難看,但可以通過一系列的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
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