Spark使用的YARN容器的命名约定是什么?

时间:2017-06-01 09:59:30

标签: apache-spark naming-conventions yarn

在YARN(yarn-cluster模式)之上运行Spark作业时,YARN会在容器中创建名称如下所示的工作程序:container_e116_1495951495692_11203_01_000105

容器的命名约定是什么?

这是我受过教育的猜测:

  • 容器 - 只是一个常量字符串,显然是
  • e116 - 不知道这是什么。也许与YARN版本有关。
  • 1495951495692_11203 - application-id
  • 01 - 尝试计数器?
  • 000105 - 这可能只是一个增量整数。

如果有任何关于此的具体信息(甚至是代码中正确位置的参考),我很高兴听到它。

鉴于上述情况,在YARN上运行Spark作业时,我如何知道哪些容器属于哪个执行器?

2 个答案:

答案 0 :(得分:3)

如果RM重新启动并启用了工作保留恢复,则会更改

containerId字符串格式。它曾经是这样的格式:
Container_{clusterTimestamp}_{appId}_{attemptId}_{containerId}
例如:Container_1410901177871_0001_01_000005

现在改为:
Container_e{epoch}_{clusterTimestamp}_{appId}_{attemptId}_{containerId}
例如:Container_e17_1410901177871_0001_01_000005

这里,附加纪元号是一个单调递增的整数,从0开始,每次RM重新启动时增加1。如果纪元号为0,则省略,containerId字符串格式与之前保持一致。

答案 1 :(得分:2)

您可以查看https://hadoop.apache.org/docs/current/api/org/apache/hadoop/yarn/api/records/ContainerId.html

containerId的字符串表示形式。当epoch时,格式为container_e epoch _ clusterTimestamp _ appId _ attemptId _ containerId 大于0(例如container_e17_1410901177871_0001_01_000005)。当RM重启或故障转移时, epoch 会增加。当纪元为0时,省略纪元(例如container_1410901177871_0001_01_000005)。