내용으로 건너뛰기

Amazon EMR에서 Spark 파라미터를 설정하려면 어떻게 해야 합니까?

3분 분량
0

Amazon EMR에서 Apache Spark 파라미터를 구성하고 싶습니다.

간략한 설명

Spark 애플리케이션을 구성하려면 spark-submit과 같은 명령줄 인수를 사용하십시오. 또는 spark-defaults.conf 파일의 값을 구성하여 변경 사항을 영구적으로 적용할 수 있습니다.

해결 방법

spark-submit을 사용하여 Spark 파라미터 구성

Spark 쉘 및 spark-submit 명령을 통해 구성을 동적으로 로드하려면 다음 옵션 중 하나를 사용하십시오.

  • 명령줄 옵션(예: --num-executors)
  • --conf 플래그

참고: 전체 옵션 목록을 보려면 spark-submit--help를 실행하십시오.

spark-submit 명령은 spark-defaults.conf에서 구성 옵션을 읽습니다.

spark-defaults.conf 파일의 각 줄에는 키와 공백으로 구분된 값이 포함됩니다.

자세한 내용은 ](https://aws.amazon.com/blogs/big-data/submitting-user-applications-with-spark-submit/)spark-submit을 사용하여 사용자 애플리케이션 제출[을 참조하십시오. Spark에서 지원하는 파라미터에 대한 자세한 내용은 Apache Spark 웹 사이트의 Spark 구성을 참조하십시오.

구성 옵션 예시:

--class  \
--master  \
--deploy-mode  \
--conf = \
--num-executors  \
--executor-memory G \
--driver-memory G \
--executor-cores  \
--driver-cores  \
--jars  \
--packages  \
--py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \

spark-submit 명령은 애플리케이션 JAR과 --jars 옵션에 포함된 모든 JAR을 클러스터에 자동으로 전송합니다. --jar 뒤에 지정된 URL은 쉼표로 구분해야 합니다. spark-submit은 드라이버 및 실행기 클래스 경로에 목록을 포함하고 실행 노드에 있는 각 SparkContext의 작업 디렉터리에 JAR 및 파일을 복사합니다.

참고: 디렉터리 확장은 --jars에서 작동하지 않습니다.

spark-submit 명령 예시:

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --num-executors 4 \
    --driver-memory 4G \
    --executor-memory 4G \
    --executor-cores 1 \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

메모리 파라미터를 전달하려면 --conf 플래그를 사용하십시오.

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --conf spark.driver.memory=1G \
    --conf spark.executor.memory=1G \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

사용자 지정 Spark 파라미터를 사용하여 spark-shell 및 pyspark shell 시작

spark-shell 또는 pyspark shell을 시작하려면 다음 명령을 실행합니다.

spark-shell

spark-shell \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

pyspark shell

pyspark \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

spark-defaults.conf를 사용하여 Spark 파라미터 구성

구성을 영구적으로 변경하려면 해당 구성을 /etc/spark/conf/spark-defaults.conf 파일에 추가합니다. 그런 다음 Spark 기록 서버를 다시 시작합니다. 다음 예시에서는 spark-defaults.conf에 실행기 메모리와 드라이버 메모리를 구성합니다. 이 예시에서 각 줄은 키와 공백으로 구분된 값으로 구성됩니다.

예시

spark.executor.memory 9486M
spark.driver.memory 9486M

다음 예시 구성은 클러스터 시작 중에 Spark 드라이버와 실행기 메모리를 구성합니다.

[
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.executor.memory": "9486M",
            "spark.driver.memory": "9486M"
        }
    }
]

참고: Amazon EMR에서 spark.yarn.executor.memoryOverhead 구성의 기본값은 18.75%이지만 표준 Spark 기본값은 0.1875%입니다. Spark 작업을 구성한 후에는 성능을 모니터링하고 리소스 사용률을 분석하여 통찰력을 얻고 작업 파라미터를 추가로 조정하십시오.

관련 정보

AWS Open Data Analytics

Spark 단계 추가

Amazon EMR 재구성을 통해 클러스터 즉시 수정

AWS 공식업데이트됨 2달 전