

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 셔플 최적화 디스크 사용
<a name="jobs-shuffle-optimized-disks"></a>

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

## 주요 이점
<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.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 작업 속성](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.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 작업 속성](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-hive.html#hive-defaults)을 참조하세요.

------

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

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

------