기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
EMR Spark MagicCommitProtocol
EMR 6.15.0부터는 S3A 파일 시스템을 사용할 때 MagicCommitProtocol이 Spark용 기본 FileCommitProtocol이 됩니다.
MagicCommitProtocol
MagicCommitProtocol은 S3A 파일 시스템을 사용할 때 Amazon S3에 EMR Spark를 사용하여 파일을 쓰는 데 최적화된 FileCommitProtocol
MagicCommitProtocol은 S3A 파일 시스템을 사용할 때 Amazon Elastic Map Reduce(EMR)에서 실행되는 Spark에서 사용하는 기본 FileCommitProtocol 구현입니다. MagicCommitProtocol은 내부적으로 MagicV2Committer를 사용하여 Amazon S3에 파일 쓰기를 수행합니다.
정적 삽입 작업의 경우 MagicCommitProtocol은 작업 커밋 단계 중에 작업의 출력 위치에 파일을 기록합니다. 반대로 동적 삽입 덮어쓰기 작업의 경우 작업 시도로 작성된 파일은 작업 커밋 시 작업의 출력 위치에만 나타납니다. 이는 작업 커밋 호출 시 커밋 메타데이터를 Spark 드라이버로 다시 내보내면 가능합니다.
MagicCommitProtocol 활성화
MagicCommitProtocol은 S3A 파일 시스템을 사용할 때 Amazon Elastic Map Reduce(EMR)에서 실행되는 Spark에 대해 기본적으로 활성화됩니다.
S3A 파일 시스템을 사용하려면 다음 중 하나를 수행할 수 있습니다.
-
테이블, 파티션 또는 디렉터리를 정의할
s3a://
때 파일 체계를 로 사용합니다. -
core-site.xml
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
에서 구성을 설정합니다.
MagicCommitProtocol 비활성화
-
에서 하드 코딩하여 Spark 셸 또는
spark-submit
spark-sql
도구SparkConf
또는에서--conf
파라미터로 전달하여 falsespark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
로 설정할 수 있습니다conf/spark-defaults.conf
. 자세한 내용은 Apache Spark 설명서의 Spark 구성을참조하세요. 다음 예제에서는
spark-sql
명령을 실행하는 동안 MagicCommitProtocol을 비활성화하는 방법을 보여줍니다.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
spark-defaults
구성 분류를 사용하여spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
속성을 false로 설정합니다. 자세한 내용은 애플리케이션 구성을 참조하세요.
MagicCommitProtocol 고려 사항
-
정적 파티션 삽입의 경우, Spark 실행기에서 MagicCommitProtocol은 작업이 커밋되거나 중단될 때까지 작업 시도로 작성된 각 파일에 대해 소량의 메모리를 사용합니다. 대부분의 작업에서 사용되는 메모리 양은 무시할 수 있습니다. Spark 드라이버에는 추가 메모리 요구 사항이 없습니다.
-
동적 파티션 삽입의 경우 Spark 드라이버에서 MagicCommitProtocol은 작업이 커밋되거나 중단될 때까지 각 커밋된 파일의 메타데이터 정보를 저장하는 메모리가 필요합니다. 대부분의 작업에서 기본 Spark 드라이버 메모리 설정은 무시해도 됩니다.
많은 수의 파일을 작성하는 장기 실행 작업이 있는 작업의 경우 커밋 프로토콜이 소비하는 메모리가 눈에 띄고 Spark(특히 Spark 실행기)에 할당된 메모리를 조정해야 할 수도 있습니다. Spark 드라이버의
spark.driver.memory
속성과 Spark 실행기의spark.executor.memory
속성을 사용하여 메모리를 튜닝할 수 있습니다. 참고로 100,000개의 파일을 쓰는 단일 작업에는 일반적으로 200MB의 메모리가 추가로 필요합니다. 자세한 내용은 Apache Spark Configuration 설명서에서 Application properties를 참조하세요.