シャッフル最適化ディスクの使用 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

シャッフル最適化ディスクの使用

Amazon EMR リリース 7.1.0 以降では、Apache Spark ジョブまたは Apache Hive ジョブを実行するときにシャッフル最適化ディスクを使用して、I/O 集約型ワークロードのパフォーマンスを向上させることができます。標準ディスクと比較して、シャッフル最適化ディスクは IOPS (1 秒あたりの I/O オペレーション) が高く、シャッフルオペレーション中のデータ移動の高速化とレイテンシーの短縮を実現します。シャッフル最適化ディスクを使用すると、ワーカーごとに最大 2 TB のディスクサイズをアタッチできるため、ワークロード要件に適した容量を設定できます。

主な利点

シャッフル最適化ディスクには以下の利点があります。

  • 高い IOPS パフォーマンス – シャッフル最適化ディスクは、標準ディスクよりも高い IOPS を実現し、Spark ジョブや Hive ジョブなどのシャッフル集約型ワークロードでデータシャッフルをより効率的かつ迅速に行うことができます。

  • より大きなディスクサイズ – シャッフル最適化ディスクは、ワーカーあたり 20 GB から 2 TB のディスクサイズをサポートしているため、ワークロードに基づいて適切な容量を選択できます。

使用開始

ワークフローでシャッフル最適化ディスクを使用するには、次の手順を参照してください。

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.typespark.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.typehive.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 に基づいてアプリケーションを作成するには、次の例を参照してください。これらのアプリケーションには、次のプロパティがあります。

  • 5 台の事前に初期化された Spark ドライバー。それぞれ 2 つの vCPU、4 GB のメモリ、50 GB のシャッフル最適化ディスクを備えています。

  • 50 個の事前に初期化されたエグゼキューター。それぞれ 4 つの vCPU、8 GB のメモリ、500 GB のシャッフル最適化ディスクを備えています。

このアプリケーションが Spark ジョブを実行すると、最初に初期化済みのワーカーを消費し、その後オンデマンドワーカーを最大 400 個の vCPU と 1024 GB のメモリ容量までスケーリングします。必要に応じて、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" }'