셔플 최적화 디스크 사용 - Amazon EMR

셔플 최적화 디스크 사용

Amazon EMR 릴리스 7.1.0 이상을 사용하면 Apache Spark 또는 Hive 작업을 실행할 때 셔플 최적화 디스크를 사용하여 I/O 집약적 워크로드의 성능을 개선할 수 있습니다. 셔플 최적화 디스크는 표준 디스크에 비해 더 높은 IOPS(초당 I/O 작업 수)를 제공하여 셔플 작업 중에 데이터 이동을 더 빠르게 하고 지연 시간을 줄일 수 있습니다. 셔플 최적화 디스크를 사용하면 작업자당 최대 2TB의 디스크 크기를 연결할 수 있으므로 워크로드 요구 사항에 적합한 용량을 구성할 수 있습니다.

주요 이점

셔플 최적화 디스크는 다음과 같은 이점을 제공합니다.

  • 높은 IOPS 성능 - 셔플 최적화 디스크는 표준 디스크보다 높은 IOPS를 제공하므로 Spark 및 Hive 작업과 기타 셔플 집약적 워크로드 중에 보다 효율적이고 빠른 데이터 셔플링이 가능합니다.

  • 더 큰 디스크 크기 - 셔플 최적화 디스크는 작업자당 20GB~2TB의 디스크 크기를 지원하므로 워크로드에 따라 적절한 용량을 선택할 수 있습니다.

시작하기

워크플로에서 셔플 최적화 디스크를 사용하려면 다음 단계를 참조하세요.

Spark
  1. 다음 명령을 사용하여 EMR Serverless 릴리스 7.1.0 애플리케이션을 생성합니다.

    aws emr-serverless create-application \ --type "SPARK" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. spark.emr-serverless.driver.disk.type 및/또는 spark.emr-serverless.executor.disk.type 파라미터를 포함하거나 셔플 최적화 디스크로 실행하도록 Spark 작업을 구성합니다. 사용 사례에 따라 하나 또는 두 파라미터를 모두 사용할 수 있습니다.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1 --conf spark.emr-serverless.executor.disk.type=shuffle_optimized" } }'

    자세한 내용은 Spark 작업 속성을 참조하세요.

Hive
  1. 다음 명령을 사용하여 EMR Serverless 릴리스 7.1.0 애플리케이션을 생성합니다.

    aws emr-serverless create-application \ --type "HIVE" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. hive.driver.disk.type 및/또는 hive.tez.disk.type 파라미터를 포함하거나 셔플 최적화 디스크로 실행하도록 Hive 작업을 구성합니다. 사용 사례에 따라 하나 또는 두 파라미터를 모두 사용할 수 있습니다.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1", "hive.driver.disk.type": "shuffle_optimized", "hive.tez.disk.type": "shuffle_optimized" } }] }'

    자세한 내용은 Hive 작업 속성을 참조하세요.

사전 초기화된 용량으로 애플리케이션 구성

Amazon EMR 릴리스 7.1.0을 기반으로 애플리케이션을 생성하려면 다음 예제를 참조하세요. 이러한 애플리케이션에는 다음과 같은 속성이 있습니다.

  • 사전 초기화된 Spark 드라이버 5개(각각 vCPU 2개, 메모리 4GB, 50GB의 셔플 최적화 디스크 포함).

  • 사전 초기화된 실행기 50개(각각 vCPU 4개, 메모리 8GB, 500GB의 셔플 최적화 디스크 포함).

이 애플리케이션에서 Spark 작업을 실행하면 먼저 사전 초기화된 작업자를 소비한 다음, 온디맨드 작업자를 최대 용량인 400vCPU 및 1,024GB의 메모리로 확장합니다. 선택적으로 DRIVER 또는 EXECUTOR의 용량을 생략할 수 있습니다.

Spark
aws emr-serverless create-application \ --type "SPARK" \ --name <my-application-name> \ --release-label emr-7.1.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB", "disk": "50GB", "diskType": "SHUFFLE_OPTIMIZED" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB", "disk": "500GB", "diskType": "SHUFFLE_OPTIMIZED" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'
Hive
aws emr-serverless create-application \ --type "HIVE" \ --name <my-application-name> \ --release-label emr-7.1.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB", "disk": "50GB", "diskType": "SHUFFLE_OPTIMIZED" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB", "disk": "500GB", "diskType": "SHUFFLE_OPTIMIZED" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'