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

3분 분량
0

Amazon EMR에서 아파치 스파크 파라미터를 구성하고 싶습니다.

간략한 설명

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 파일에서 각 라인은 공백으로 구분된 키와 값으로 구성됩니다.

자세한 내용은 spark-submit을 사용하여 사용자 애플리케이션 제출 섹션을 참조하세요.

Spark에서 지원하는 파라미터에 대한 자세한 내용은 Spark 구성을 참조하세요.

다음은 가장 일반적인 구성 옵션 중 일부입니다.

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

spark-submit을 사용하면 애플리케이션 JAR 및 --jars 옵션에 포함된 모든 JAR가 클러스터로 자동 전송됩니다. --jars 다음에 제공된 URL은 쉼표로 구분해야 합니다. 목록은 드라이버 및 실행기 클래스 경로에 포함되며 JAR 및 파일은 실행기 노드의 각 SparkContext의 작업 디렉터리에 복사됩니다. 디렉터리 확장은 --jars에서는 작동하지 않는다는 점에 유의하세요.

예시

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 쉘을 실행합니다.

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

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 쉘

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에서 Apache Spark 애플리케이션을 위한 메모리를 성공적으로 관리하는 모범 사례

Spark 단계 추가

Amazon EMR 재구성으로 클러스터를 즉시 수정할 수 있습니다.

AWS 공식
AWS 공식업데이트됨 일 년 전