使用隨機最佳化磁碟 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用隨機最佳化磁碟

使用 Amazon EMR 7.1.0 版和更新版本,您可以在執行 Apache Spark 或 Hive 任務時使用隨機最佳化磁碟,以提高 I/O 密集型工作負載的效能。與標準磁碟相比,隨機播放最佳化磁碟可提供更高的 IOPS (每秒 I/O 操作),以加快資料移動速度,並降低隨機播放操作期間的延遲。隨機最佳化磁碟可讓您連接每個工作者最多 2 TB 的磁碟大小,以便您可以設定工作負載需求的適當容量。

主要優點

隨機最佳化磁碟提供下列優點。

  • 高 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 任務以包含參數spark.emr-serverless.driver.disk.type和/spark.emr-serverless.executor.disk.type或使用隨機最佳化磁碟執行。視您的使用案例而定,您可以使用一個或兩個參數。

    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 任務以包含參數hive.driver.disk.type和/hive.tez.disk.type或使用隨機最佳化磁碟執行。視您的使用案例而定,您可以使用一個或兩個參數。

    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" }'