복붙노트

[HADOOP] spark-submit을 사용하면 --total-executor-core 옵션의 동작은 무엇입니까?

HADOOP

spark-submit을 사용하면 --total-executor-core 옵션의 동작은 무엇입니까?

나는 파이썬으로 싸인 C ++ 코드를 통해 스파크 클러스터를 실행 중이다. 현재 멀티 스레딩 옵션의 다른 구성을 테스트 중입니다 (파이썬 수준 또는 스파크 수준).

나는 독립 실행 형 바이너리와 함께 HDFS 2.5.4 클러스터를 통해 스파크를 사용하고 있습니다. 클러스터는 현재 각각 4 개의 코어가있는 10 개의 슬레이브로 구성됩니다.

내가 볼 수있는 것부터, 기본적으로 Spark는 노드 당 4 개의 슬레이브를 시작합니다 (한 번에 슬레이브 노드에서 작동하는 4 개의 파이썬이 있습니다).

이 번호를 어떻게 제한합니까? "spark-submit"에 대해 - 총 - executor-core 옵션이 있음을 알 수 있습니다. 그러나 클러스터를 통해 집행자의 분포에 어떤 영향을 미치는지에 대한 문서는 거의 없습니다!

테스트를 실행하여 명확한 아이디어를 얻지 만 지식이있는 사람이이 옵션의 실마리를 알면 도움이 될 수 있습니다.

업데이트 :

나는 스파크 문서를 다시 훑어 보았다. 내가 이해할 수있는 것은 여기있다.

이 문서의 다음 줄은 http://spark.apache.org/docs/latest/spark-standalone.html에서 진행 상황을 파악하는 데 도움이되었습니다.

여전히 불분명 한 것은 내 경우에 작업자 노드 당 병렬 작업 수를 1 개로 제한하고 C ++ 레거시 코드 멀티 스레딩에 의존하는 것이 더 나은 이유입니다. 이번 연구를 끝낼 때 실험 결과로이 포스트를 업데이트 할 것입니다.

해결법

  1. ==============================

    1.설명서가 명확하지 않은 것 같습니다.

    설명서가 명확하지 않은 것 같습니다.

    내 경험에 비추어 볼 때, 리소스를 할당하는 가장 일반적인 방법은 집행자의 수와 집행자 당 코어의 수를 나타내는 것입니다 (예 : 여기에서 가져옴).

    $ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn-cluster \
    --num-executors 10 \
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 4 \
    --queue thequeue \
    lib/spark-examples*.jar \
    10
    

    그러나이 방법은 YARN에만 국한되며 독립형 및 메소 기반의 스파크에는 적용 할 수 없습니다.

    대신 Spark 작업에 할당 된 모든 실행 프로그램의 총 코어를 나타내는 --total-executor-core를 사용할 수 있습니다. 총 40 개의 코어가있는 경우 --total-executor-core 40 속성을 설정하면 사용 가능한 모든 리소스가 사용됩니다.

    불행히도 Spark이 사용 가능한 총 리소스보다 적은 리소스가 제공되는 경우 작업 부하를 배포하는 방법을 알지 못합니다. 그러나 둘 이상의 동시 작업으로 작업하는 경우 사용자 설정에 따라 리소스가 관리되는 방식을 관리하는 Spark (또는 모든 리소스 관리자)에서 사용자에게 투명해야합니다.

  2. ==============================

    2.각 슬레이브에서 시작된 작업자의 수를 확인하려면 웹 브라우저를 열고 http : // master-ip : 8080을 입력하고 정확하게 시작된 작업자 수와 슬레이브의 작업자 수를 확인하십시오. (노드 당 4 개의 노예라고 말하면 무엇을 의미하는지 확신 할 수 없으므로 위의 내용을 언급 함)

    각 슬레이브에서 시작된 작업자의 수를 확인하려면 웹 브라우저를 열고 http : // master-ip : 8080을 입력하고 정확하게 시작된 작업자 수와 슬레이브의 작업자 수를 확인하십시오. (노드 당 4 개의 노예라고 말하면 무엇을 의미하는지 확신 할 수 없으므로 위의 내용을 언급 함)

    기본적으로 spark는 지정한 경우를 제외하고는 각 슬레이브에 정확히 1 명의 작업자를 시작합니다. conf / spark-env.sh의 SPARK_WORKER_INSTANCES = n입니다. 여기서 n은 각 슬레이브에서 시작하려는 작업자 인스턴스 수입니다.

    spark-submit을 통해 spark 작업을 제출하면 spark는 응용 프로그램 드라이버와 작업 수행자를 시작합니다.

  3. from https://stackoverflow.com/questions/30031214/using-spark-submit-what-is-the-behavior-of-the-total-executor-cores-option by cc-by-sa and MIT license