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

What is the naming convention for YARN containers used by Spark?

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

容器的命名约定是什么?

这是我的有根据的猜测:

如果有关于此的任何具体信息(或者甚至是对代码中正确位置的引用),我将很高兴听到。

综上所述,在YARN上运行一个Spark作业时,如何知道哪些容器属于哪个执行器?

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

containerId 的字符串表示形式。格式为container_eepoch_clusterTimestamp_appId_attemptId _containerId 当 epoch 大于 0 时(例如 container_e17_1410901177871_0001_01_000005)。 epoch 在 RM 重启或故障转移时增加。当epoch为0时,省略epoch(例如container_1410901177871_0001_01_000005)。

containerId 如果 RM 在启用工作保留恢复的情况下重新启动,则字符串格式会更改。以前是这样的格式:
Container_{clusterTimestamp}_{appId}_{attemptId}_{containerId}
例如:Container_1410901177871_0001_01_000005.

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

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