

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 以降では、Amazon EMR と Apache Spark を [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* は、1 秒間に数十万件単位のリクエストによりデータに頻繁にアクセスするようなアプリケーション用の 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 コネクタ** - S3 Express One Zone ストレージクラスを使用する Amazon S3 バケットのデータにアクセスするように Spark クラスターを設定するには、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 マネジメントコンソールにクラスターを作成するための大まかな概要を説明します。

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`  |  指定しない場合は、`TemporaryAWSCredentialsProvider`、`SimpleAWSCredentialsProvider`、`EnvironmentVariableCredentialsProvider`、`IAMInstanceCredentialsProvider` の順序で `AWSCredentialProviderList` が使用されます。  |  <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`  |  なし  |  S3A による変更検出は、MD5 ベースの `etags` をチェックすることで動作します。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 ストレージクラスと統合する場合は、次の点を考慮してください。
+ Amazon EMR で S3 Express One Zone を使用するには、S3A コネクタが必要です。S3 Express One Zone との通信に必要な機能とストレージクラスを備えているのは S3A だけです。コネクタを設定する手順については、「[前提条件](#emr-express-one-zone-prereqs)」を参照してください。
+ Amazon S3 Express One Zone ストレージクラスは SSE-S3 および SSE-KMS の暗号化をサポートします。詳細については、「[サーバー側の暗号化によるデータの保護](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* が発生します。
+ EMR on EC2 では、Amazon S3 Express One Zone は、Amazon EMR リリース 6.15.0 以降でサポートされています。さらに、Amazon EMR リリース 7.2.0 以降では、Amazon EMR on EKS および Amazon EMR Serverless でサポートされています。