来自客户的YARN ContainerID



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

如果不可能,RM Web界面是否提供此信息?

YARN CLI有一个从应用程序尝试ID获取容器列表的选项。您可以按照以下步骤获取容器列表。

  • 步骤1:从应用程序ID获取应用程序尝试列表

    从YARN应用程序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
    

相当难看,但可以通过对ResourceManager、NodeManager和各种ContainerLog URL的一系列URL请求来完成:

# 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"

这种方法有效,但在YARN JAVA API 中可能应该有更干净的方法

相关内容

  • 没有找到相关文章