使用随机排序优化的磁盘 - 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 作业,使其包含参数 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、4GB 内存和 50GB 随机排序优化的磁盘。

  • 50 个预初始化的执行程序,每个都有 4 个 vCPU、8GB 内存和 500GB 随机排序优化的磁盘。

当应用程序运行 Spark 作业时,会先使用预初始化的工作线程,然后将按需工作线程扩展到最大容量 400 个 vCPU 和 1024GB 内存。您可以选择忽略 DRIVEREXECUTOR 的容量。

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