

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

# Amazon S3 Express One Zone에 데이터 업로드
<a name="emr-express-one-zone"></a>

## 개요
<a name="emr-express-one-zone-overview"></a>

Amazon EMR 6.15.0 이상에서는 Apache Spark가 있는 Amazon EMR을 [Amazon S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html) 스토리지 클래스와 함께 사용하여 Spark 작업의 성능을 향상시킬 수 있습니다. Amazon EMR 릴리스 7.2.0 이상은 HBase, Flink 및 Hive도 지원하므로 이러한 애플리케이션을 사용하는 경우에도 S3 Express One Zone의 이점을 누릴 수 있습니다. S3 Express One Zone은 초당 수십만 개의 요청을 통해 데이터에 빈번하게 액세스하는 애플리케이션을 위한 S3 스토리지 클래스입니다.** 릴리스 시점에 S3 Express One Zone은 Amazon S3에서 지연 시간이 가장 낮고 성능은 가장 뛰어난 클라우드 객체 스토리지를 제공합니다.

## 사전 조건
<a name="emr-express-one-zone-prereqs"></a>
+ **S3 Express One Zone 권한** - S3 Express One Zone이 S3 객체에 대해 `GET`, `LIST` 또는 `PUT`과 같은 작업을 최초로 수행하면 스토리지 클래스가 사용자를 대신하여 `CreateSession`을 호출합니다. S3A 커넥터가 `CreateSession` API를 간접적으로 호출할 수 있으려면 IAM 정책에서 `s3express:CreateSession` 권한을 허용해야 합니다. 이 권한이 있는 정책 예시는 [Amazon S3 Express One Zone 시작하기](#emr-express-one-zone-start) 섹션을 참조하세요.
+ **S3A 커넥터** - Spark 클러스터를 S3 Express One Zone 스토리지 클래스를 사용하는 Amazon S3 버킷의 데이터에 액세스하도록 구성하려면 Apache Hadoop 커넥터 S3A를 사용해야 합니다. 커넥터를 사용하려면 모든 S3 URI가 `s3a` 체계를 사용하는지 확인해야 합니다. 그렇지 않은 경우 `s3` 및 `s3n` 체계에 대해 사용하는 파일 시스템 구현을 변경할 수 있습니다.

`s3` 체계를 변경하려면 다음 클러스터 구성을 지정하세요.

```
[
  {
    "Classification": "core-site",
    "Properties": {
      "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
      "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
    }
  }
]
```

`s3n` 체계를 변경하려면 다음 클러스터 구성을 지정하세요.

```
[
  {
    "Classification": "core-site",
    "Properties": {
      "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
      "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A"
    }
  }
]
```

## Amazon S3 Express One Zone 시작하기
<a name="emr-express-one-zone-start"></a>

**Topics**
+ [

### 권한 정책 생성
](#emr-express-one-zone-permissions)
+ [

### 클러스터 생성 및 구성
](#emr-express-one-zone-create)
+ [

### 구성 개요
](#emr-express-one-zone-configs)

### 권한 정책 생성
<a name="emr-express-one-zone-permissions"></a>

Amazon S3 Express One Zone을 사용하는 클러스터를 생성하기 전에 클러스터의 Amazon EC2 인스턴스 프로파일에 연결할 IAM 정책을 생성해야 합니다. 정책에는 S3 Express One Zone 스토리지 클래스에 액세스할 수 있는 권한이 있어야 합니다. 다음 정책 예제에서는 필요한 권한을 부여하는 방법을 보여줍니다. 정책을 생성한 후에는 [클러스터 생성 및 구성](#emr-express-one-zone-create) 섹션의 내용대로 정책을 EMR 클러스터를 생성하는 데 사용하는 인스턴스 프로파일 역할에 연결할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3express:*:123456789012:bucket/example-s3-bucket"
      ],
      "Action": [
        "s3express:CreateSession"
      ],
      "Sid": "AllowS3EXPRESSCreatesession"
    }
  ]
}
```

------

### 클러스터 생성 및 구성
<a name="emr-express-one-zone-create"></a>

다음으로 S3 Express One Zone을 사용하여 Spark, HBase, Flink 또는 Hive를 실행하는 클러스터를 생성합니다. 다음 단계에서는 AWS Management Console에서 클러스터를 생성하는 방법을 개략적으로 설명합니다.

1. Amazon EMR 콘솔로 이동하고 사이드바에서 **클러스터**를 선택합니다. 그 다음에 **클러스터 생성**을 선택합니다.

1. Spark를 사용하는 경우 Amazon EMR 릴리스 `emr-6.15.0` 이상을 선택합니다. HBase, Flink 또는 Hive를 사용하는 경우 `emr-7.2.0` 이상을 선택합니다.

1. Spark, HBase 또는 Flink와 같이 클러스터에 포함할 애플리케이션을 선택합니다.

1. Amazon S3 Express One Zone을 활성화하기 위해 **소프트웨어 설정** 섹션에 다음 예시와 비슷한 구성을 입력합니다. 구성 및 권장되는 값은 이 절차 다음에 이어지는 [구성 개요](#emr-express-one-zone-configs) 섹션에서 확인할 수 있습니다.

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider",
         "fs.s3a.change.detection.mode": "none",
         "fs.s3a.endpoint.region": "aa-example-1",
         "fs.s3a.select.enabled": "false"
       }
     },
     {
       "Classification": "spark-defaults",
       "Properties": {
         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
       }
     }
   ]
   ```

1. **Amazon EMR용 EC2 인스턴스 프로파일** 섹션에서 기존 역할을 사용하도록 선택하고 위의 [권한 정책 생성](#emr-express-one-zone-permissions) 섹션에서 생성한 정책이 첨부된 역할을 사용합니다.

1. 나머지 클러스터 설정을 애플리케이션에 맞게 구성한 다음 **클러스터 생성**을 선택합니다.

### 구성 개요
<a name="emr-express-one-zone-configs"></a>

다음 표에는 [클러스터 생성 및 구성](#emr-express-one-zone-create) 섹션의 내용처럼 Amazon EMR과 함께 S3 Express One Zone을 사용하는 클러스터를 설정하는 경우 지정해야 하는 구성 및 권장되는 값이 설명되어 있습니다.

**S3A 구성**


| 파라미터 | 기본값  | 제안된 값 | 설명 | 
| --- | --- | --- | --- | 
|  `fs.s3a.aws.credentials.provider`  |  지정되지 않은 경우에는 `AWSCredentialProviderList`를 `TemporaryAWSCredentialsProvider`, `SimpleAWSCredentialsProvider`, `EnvironmentVariableCredentialsProvider`, `IAMInstanceCredentialsProvider`의 순서로 사용합니다.  |  <pre>software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider</pre>  |  Amazon EMR 인스턴스 프로파일 역할에는 S3A 파일 시스템이 `s3express:CreateSession`을 직접적으로 호출하도록 허용하는 정책이 있어야 합니다. 다른 보안 인증 정보 공급자도 S3 Express One Zone 권한이 있는 경우 작동할 수 있습니다.  | 
|  `fs.s3a.endpoint.region`  |  null  |  버킷을 생성한 AWS 리전 입니다.  |  리전 확인 로직은 S3 Express One Zone 스토리지 클래스에서는 작동하지 않습니다.  | 
|  `fs.s3a.select.enabled`  |  `true`  |  `false`  |  Amazon S3 `select`는 S3 Express One Zone 스토리지 클래스에서 지원되지 않습니다.  | 
|  `fs.s3a.change.detection.mode`  |  `server`  |  없음  |  MD5 기반의 `etags`을 확인하여 S3A 작업에서의 감지를 변경합니다. S3 Express One Zone 스토리지 클래스는 MD5 `checksums`을 지원하지 않습니다.  | 

**Spark 구성**


| 파라미터 | 기본값  | 제안된 값 | 설명 | 
| --- | --- | --- | --- | 
|  `spark.sql.sources.fastS3PartitionDiscovery.enabled`  |  `true`  |  false  |  내부 최적화는 S3 Express One Zone 스토리지 클래스에서 지원되지 않는 S3 API 파라미터를 사용합니다.  | 

**Hive 구성**


| 파라미터 | 기본값  | 제안된 값 | 설명 | 
| --- | --- | --- | --- | 
|  `hive.exec.fast.s3.partition.discovery.enabled`  |  `true`  |  false  |  내부 최적화는 S3 Express One Zone 스토리지 클래스에서 지원되지 않는 S3 API 파라미터를 사용합니다.  | 

## 고려 사항
<a name="emr-express-one-zone-considerations"></a>

Amazon EMR의 Apache Spark를 S3 Express One Zone 스토리지 클래스와 통합하는 경우에는 다음 사항을 고려하세요.
+ S3 Express One Zone을 Amazon EMR과 함께 사용하기 위해서는 S3A 커넥터가 있어야 합니다. S3 Express One Zone과 상호 작용하는 데 필요한 기능과 스토리지 클래스는 S3A에만 있습니다. 커넥터를 설정하는 단계는 [사전 조건](#emr-express-one-zone-prereqs) 섹션을 참조하세요.
+ S3 Express One Zone 스토리지 클래스는 SSE-S3 및 SSE-KMS 암호화만 지원합니다. 자세한 내용은 [Amazon S3를 사용한 서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-data-protection.html#s3-express-ecnryption)를 참조하세요.
+ Amazon S3 Express One Zone 스토리지 클래스는 S3A `FileOutputCommitter`를 사용한 쓰기를 지원하지 않습니다. S3 Express One Zone 버킷에서 S3A `FileOutputCommitter`를 사용하여 쓸 경우 *InvalidStorageClass: The storage class you specified is not valid* 오류가 발생합니다.
+ Amazon S3 Express One Zone은 EMR on EC2의 Amazon EMR 릴리스 6.15.0 이상에서 지원됩니다. 또한 Amazon EMR on EKS 및 Amazon EMR Serverless의 Amazon EMR 릴리스 7.2.0 이상에서 지원됩니다.