

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

# 使用隨機最佳化磁碟
<a name="jobs-shuffle-optimized-disks"></a>

使用 Amazon EMR 7.1.0 版及更新版本，請在執行 Apache Spark 或 Hive 任務時使用隨機最佳化磁碟，以提高 I/O 密集型工作負載的效能。相較於標準磁碟，隨機播放最佳化磁碟提供更高的 IOPS （每秒 I/O 操作），可在隨機播放操作期間更快速地移動資料並減少延遲。隨機最佳化磁碟可讓您連接每個工作者最多 2 TB 的磁碟大小，因此請為您的工作負載需求設定適當的容量。

## 主要優點
<a name="jobs-shuffle-optimized-disks-key-benefits"></a>

隨機最佳化磁碟提供下列優點。
+ **高 IOPS 效能** – 隨機播放最佳化磁碟提供的 IOPS 高於標準磁碟，因此在 Spark 和 Hive 任務和其他隨機播放密集型工作負載期間，資料隨機播放更有效率且速度更快。
+ **較大的磁碟大小** – 隨機最佳化磁碟支援每個工作者 20GB 到 2TB 的磁碟大小，因此請根據您的工作負載選擇適當的容量。

## 開始使用
<a name="jobs-shuffle-optimized-disks-getting-started"></a>

請參閱下列步驟，以在工作流程中使用隨機最佳化磁碟。

------
#### [ 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>
   ```

1. 設定您的 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 任務屬性](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-defaults)。

------
#### [ 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>
   ```

1. 設定 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 任務屬性](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-hive.html#hive-defaults)。

------

**設定具有預先初始化容量的應用程式**

請參閱下列範例，以根據 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"
  }'
```

------