2016-09-29 2 views

답변

1

Apache Spark에는 실행자 호스트 IP를 반환하는 executorHost() 메소드가있는 ExecutorInfo 클래스가 있습니다.

1

SparkListener 추상 클래스를 사용하고 두 개의 실행 프로그램 관련 이벤트 - SparkListenerExecutorAddedSparkListenerExecutorRemoved을 차단해야합니다.

override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded): Unit = { 
    val execId = executorAdded.executorId 
    val host = executorAdded.executorInfo.executorHost 
    executors += (execId -> host) 
    println(s">>> executor id=$execId added on host=$host") 
} 

override def onExecutorRemoved(executorRemoved: SparkListenerExecutorRemoved): Unit = { 
    val execId = executorRemoved.executorId 
    val host = executors remove execId getOrElse "Host unknown" 
    println(s">>> executor id=$execId removed from host=$host") 
} 

전체 작업 프로젝트는 내 Spark Executor Monitor Project입니다.

+0

또한이 옵션을 시도했지만 executor (끈적 파티션)에 파티션을 매핑하는 것과 같은 RDD의 일부 변환을 실행하는이 실행 프로그램 목록을 제공해야합니다. 하지만 sc.start()가 호출 될 때 호출되지 않는 것처럼 보이지만 후자가 될 수도 있습니다. 따라서 RDD를 변환하기 위해 dstream의 일부 함수를 호출하기 전에 목록을 가져올 수 없습니다. 시간 내 줘서 고마워 ! –

+0

특정 executor에게 * 작업 전에 * 요청 * 할 필요가있는 경우 (응용 프로그램에 지정된 executor를 알지 못하는 경우) 목록을 'preferredLocation'으로 지정하는 사용자 정의 RDD를 개발해야합니다. 그렇게하려면 할 수있는 자신 만의 'DStream'을 개발해야합니다. 당신은 정말로 무엇을 성취하려고합니까? 유스 케이스 란 무엇입니까? –

관련 문제