我正在 YARN 上运行 Spark 作业,并且希望获取 YARN 容器 ID(作为在一组 Spark 作业中生成唯一 ID 的要求的一部分)。我可以看到容器.getId() https://hadoop.apache.org/docs/r2.6.0/api/org/apache/hadoop/yarn/api/records/Container.html#getId()方法来获取 ContainerId,但不知道如何从 YARN 获取对当前正在运行的容器的引用。这可能吗? YARN容器如何获取自己的信息?
我能得到一些东西的唯一方法是使用日志目录。以下工作在 Spark shell 中进行。
import org.apache.hadoop.yarn.api.records.ContainerId
def f(): String = {
val localLogDir: String = System.getProperty("spark.yarn.app.container.log.dir")
val containerIdString: String = localLogDir.split("/").last
val containerIdLong: Long = ContainerId.fromString(containerIdString).getContainerId
containerIdLong.toHexString
}
val rdd1 = sc.parallelize((1 to 10)).map{ _ => f() }
rdd1.distinct.collect().foreach(println)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)