2016-05-31 1 views
1

내 mapPartition 부분에는 멀티 스레딩 작업이 있습니다. 스레드 풀을 사용하며 병렬로 작업을 실행하려고합니다. 그러나 나는이 두 매개 변수를 구별 할 수 없다. --executor-cores을 5로 설정하고 작업에 4 개의 스레드를 실행할 수 있다고 생각합니다. 이게 옳은 거니?spark.task.cpus와 --executor-core의 차이점

답변

2

spark.task.cpus은 각 태스크에 할당 할 코어 수이고 --executor-cores은 실행 프로그램 별 코어 수를 지정합니다.

here과 같이 실행 프로그램과 작업간에 약간의 차이가 있습니다.

코어 당 실행할 수있는 스레드 수를 알고 싶으면 this 게시물을 확인하십시오. 당신이 SparkContext를 만들 때

는 각 근로자가 집행을 시작합니다 : 링크 당으로

. 이것은 별도의 프로세스 (JVM)입니다. 실행 프로그램은 드라이버 프로그램에 다시 연결됩니다. 이제 드라이버는 flatMap, map 및 reduceByKey와 같은 명령을 보낼 수 있습니다.이 명령은 작업입니다.

코어 당 CPU가 지원하는 스레드 수를 알아 보려면 lscpu 이고 확인 값은 Thread(s) per core:입니다.

+0

** spark.task.cpus **, ** - executor-cores **, ** - num executor **를 설정 했으므로 ** - executor-core **를 얻을 수 있습니다 ** * ** - num executor ** 코어. 그러나 클러스터 정보는 내가 틀렸다는 것을 보여줍니다. – cstur4

+0

클러스터 정보는 어떻게 받습니까? SPARK_WORKER_CORES 및 SPARK_EXECUTOR_CORES에 혼란스러워하십니까? –