在YARN(yarn-cluster模式)之上运行Spark作业时,YARN会在容器中创建名称如下所示的工作程序:container_e116_1495951495692_11203_01_000105
容器的命名约定是什么?
这是我受过教育的猜测:
如果有任何关于此的具体信息(甚至是代码中正确位置的参考),我很高兴听到它。
鉴于上述情况,在YARN上运行Spark作业时,我如何知道哪些容器属于哪个执行器?
答案 0 :(得分:3)
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)。