복붙노트

[HADOOP] 동적 리소스 할당을 사용하여 스파크 프로그램을 실행하는 방법

HADOOP

동적 리소스 할당을 사용하여 스파크 프로그램을 실행하는 방법

spark-summit 명령을 사용하여 다음과 같은 매개 변수를 사용하여 Spark 작업을 실행합니다.

spark-submit --master yarn-cluster --driver-cores 2 \
 --driver-memory 2G --num-executors 10 \
 --executor-cores 5 --executor-memory 2G \
 --class com.spark.sql.jdbc.SparkDFtoOracle2 \
 Spark-hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar

이제 Spark의 Dynamic Resource 할당을 사용하여 동일한 프로그램을 실행하고 싶습니다. Spark 프로그램을 실행할 때 Dynamic Resource Allocation 사용에 도움을주십시오.

해결법

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

    1.Spark 동적 할당에서 spark.dynamicAllocation.enabled는 기본적으로 false이기 때문에 true로 설정해야합니다.

    Spark 동적 할당에서 spark.dynamicAllocation.enabled는 기본적으로 false이기 때문에 true로 설정해야합니다.

    스파크 애플리케이션이 YARN에서 실행 중이므로 spark.shuffle.service.enabled를 true로 설정해야합니다. YARN의 각 노드 관리자에서 셔플 서비스를 시작하려면이 링크를 선택하십시오.

    다음 구성도 관련이 있습니다.

    spark.dynamicAllocation.minExecutors, 
    spark.dynamicAllocation.maxExecutors, and 
    spark.dynamicAllocation.initialExecutors
    

    이 옵션들은 3 가지 방법으로 Spark 어플리케이션에 맞게 구성 될 수 있습니다.

    1. Spark 제출시 --conf =

    spark-submit --master yarn-cluster \
        --driver-cores 2 \
        --driver-memory 2G \
        --num-executors 10 \
        --executor-cores 5 \
        --executor-memory 2G \
        --conf spark.dynamicAllocation.minExecutors=5
        --conf spark.dynamicAllocation.maxExecutors=30
        --conf spark.dynamicAllocation.initialExecutors=10 
        --class com.spark.sql.jdbc.SparkDFtoOracle2 \
        Spark-hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar
    

    2. SparkConf가있는 Spark 프로그램 내부

    SparkConf에서 속성을 설정 한 다음 SparkSession 또는 SparkContext를 만듭니다.

    val conf: SparkConf = new SparkConf()
    conf.set("spark.dynamicAllocation.minExecutors", "5");
    conf.set("spark.dynamicAllocation.maxExecutors", "30");
    conf.set("spark.dynamicAllocation.initialExecutors", "10");
    .....
    

    3. spark-defaults.conf는 보통 $ SPARK_HOME / conf /에 있습니다.

    spark-defaults.conf에 동일한 구성을 적용하여 명령 줄과 코드에서 구성을 전달하지 않으면 모든 스파크 응용 프로그램에 적용하십시오.

    Spark - 동적 할당 구성

  2. from https://stackoverflow.com/questions/40200389/how-to-execute-spark-programs-with-dynamic-resource-allocation by cc-by-sa and MIT license