[HADOOP] 컨테이너 내부에서 YARN ContainerId를 어떻게 얻습니까?
HADOOP컨테이너 내부에서 YARN ContainerId를 어떻게 얻습니까?
YARN에서 Spark 작업을 실행하고 있으며 YARN 컨테이너 ID를 얻고 싶습니다 (Spark 작업 세트에서 고유 ID를 생성하기위한 요구 사항의 일부). ContainerId를 가져 오는 Container.getId () 메소드를 볼 수 있지만 YARN에서 현재 실행중인 컨테이너에 대한 참조를 얻는 방법을 모릅니다. 이것이 가능합니까? YARN 컨테이너는 어떻게 자신의 정보를 얻습니까?
해결법
-
==============================
1.내가 얻을 수있는 유일한 방법은 logging 디렉토리를 사용하는 것입니다. 다음은 스파크 쉘에서 작동합니다.
내가 얻을 수있는 유일한 방법은 logging 디렉토리를 사용하는 것입니다. 다음은 스파크 쉘에서 작동합니다.
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)
-
==============================
2.아래는 컨테이너 ID를 Spark에 저장하는 방법에 대한 설명입니다.
아래는 컨테이너 ID를 Spark에 저장하는 방법에 대한 설명입니다.
컨테이너 ID를 숨기고 응용 프로그램 / 작업마다 실행기 ID를 노출 스파크 작업 당 고유 ID를 유지하려는 경우 스파크가 제공하는 응용 프로그램 ID를 사용하라는 제안은 고유 한 문자열을 추가 할 수 있습니다
"YarnAllocator.scala"의 스파크 코드 아래
private [yarn] val executorIdToContainer = 새 HashMap [문자열, 컨테이너]
-
==============================
3.YARN은 여기에 나열된 모든 환경 변수를 내 보냅니다 : https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org /apache/hadoop/yarn/api/ApplicationConstants.java#L117
YARN은 여기에 나열된 모든 환경 변수를 내 보냅니다 : https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org /apache/hadoop/yarn/api/ApplicationConstants.java#L117
따라서 다음과 같이 액세스 할 수 있어야합니다.
sys.env.get(ApplicationConstants.Environment.CONTAINER_ID.toString) // or, equivalently sys.env.get("CONTAINER_ID")
from https://stackoverflow.com/questions/41724300/how-do-i-get-the-yarn-containerid-from-inside-the-container by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] yarn hadoop 2.4.0 : 정보 메시지 : ipc.Client Retrying connect to server (0) | 2019.09.09 |
---|---|
[HADOOP] 여러 레코드를 포함하는 삽입 문을 작성하는 Sqoop (0) | 2019.09.08 |
[HADOOP] Java 내부의 Hbase CopyTable (0) | 2019.09.08 |
[HADOOP] 확률과 예측이 모든 것을 동일하게 만드는 Spark MLLib 관련 문제 (0) | 2019.09.08 |
[HADOOP] 하둡 작업 추적기 문제 (0) | 2019.09.08 |