

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

# 移行ガイド: EMRFS から S3A ファイルシステムへ
<a name="emr-s3a-migrate"></a>

EMR-7.10.0 リリース以降、S3A ファイルシステム は、以下を含むすべての S3 ファイルスキームの EMR クラスター用のデフォルトのファイルシステム/S3 コネクタです。
+ **s3://**
+ **s3n://**
+ **s3a://**

この変更は、EC2、EKS、EMR Serverless を含むすべての EMR デプロイに適用されます。

EMRFS を引き続き使用する場合は、`core-site.xml` 設定ファイルに次のプロパティを追加して設定できます。

```
<property>
  <name>fs.s3.impl</name>
  <value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value>
</property>
<property>
  <name>fs.s3n.impl</name>
  <value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value>
</property>
```

## 既存の EMRFS 設定の S3A 設定への移行
<a name="emr-s3a-migration-of-existing-emrfs-configurations"></a>

**注記**  
Amazon EMR は、特定の条件が満たされた場合に、EMRFS と S3A 間の自動設定マッピングを実装します。マッピングプロセスは、対応する EMRFS 設定が存在する間に S3A 設定が未定義の場合に自動的に発生します。この自動マッピング機能はバケットレベルの設定に拡張され、EMRFS 設定と S3A 設定をシームレスに統合できます。例として、「XYZ」の値で「'fs.s3.bucket.amzn-s3-demo-bucket1.serverSideEncryption.kms.keyId'」を使用して EMRFS でバケット固有の暗号化設定を構成することにより、システムは指定されたバケット amzn-s3-demo-bucket1 の「'fs.s3a.encryption.key'」を「XYZ」に設定することで、これを同等の S3A 設定に自動的にマッピングします。

以下の事前定義された EMRFS 設定のセットは、対応する S3A 設定に相当するものに自動的に変換されます。クラスターまたはジョブの上書きによって現在実装されている設定は、追加の手動設定や変更を必要とせずに S3A ファイルシステムにシームレスに移行します。

デフォルトでは、この設定マッピング機能は自動的に有効になります。この自動翻訳を無効にするには、次のプロパティを core-site.xml 設定ファイルに追加します。

```
<property>
  <name>fs.s3a.emrfs.compatibility.enable</name>
  <value>false</value>
</property>
```

**注記**  
EMRFS (fs.s3.serverSideEncryption.kms.keyId または fs.s3.cse.kms.keyId) から S3A (fs.s3a.encryption.key) への暗号化キーマッピングは、いずれかのファイルシステムで SSE-KMS または CSE-KMS 暗号化が有効になっている場合にのみ発生します。


**EMRFS から S3A への設定マッピング**  

| EMRFS 設定名 | S3A 設定名 | 
| --- | --- | 
| fs.s3.aimd.adjustWindow | fs.s3a.aimd.adjustWindow | 
| fs.s3.aimd.enabled | fs.s3a.aimd.enabled | 
| fs.s3.aimd.increaseIncrement | fs.s3a.aimd.increaseIncrement | 
| fs.s3.aimd.initialRate | fs.s3a.aimd.initialRate | 
| fs.s3.aimd.maxAttempts | fs.s3a.aimd.maxAttempts | 
| fs.s3.aimd.minRate | fs.s3a.aimd.minRate | 
| fs.s3.aimd.reductionFactor | fs.s3a.aimd.reductionFactor | 
| fs.s3.sts.endpoint | fs.s3a.assumed.role.sts.endpoint | 
| fs.s3.sts.sessionDurationSeconds | fs.s3a.assumed.role.session.duration | 
| fs.s3.authorization.roleMapping | fs.s3a.authorization.roleMapping | 
| fs.s3.authorization.ugi.groupName.enabled | fs.s3a.authorization.ugi.groupName.enabled | 
| fs.s3.credentialsResolverClass | fs.s3a.credentials.resolver | 
| fs.s3n.multipart.uploads.enabled | fs.s3a.multipart.uploads.enabled | 
| fs.s3n.multipart.uploads.split.size | fs.s3a.multipart.size | 
| fs.s3.serverSideEncryption.kms.customEncryptionContext | fs.s3a.encryption.context | 
| fs.s3.enableServerSideEncryption | fs.s3a.encryption.algorithm | 
| fs.s3.serverSideEncryption.kms.keyId / fs.s3.cse.kms.keyId | fs.s3a.encryption.key | 
| fs.s3.cse.kms.region | fs.s3a.encryption.cse.kms.region | 
| fs.s3.authorization.audit.enabled | fs.s3a.authorization.audit.enabled | 
| fs.s3.buckets.create.enabled | fs.s3a.bucket.probe | 
| fs.s3.delete.maxBatchSize | fs.s3a.bulk.delete.page.size | 
| fs.s3.filestatus.metadata.enabled | fs.s3a.metadata.cache.enabled | 
| fs.s3.maxConnections | fs.s3a.connection.maximum | 
| fs.s3.maxRetries | fs.s3a.retry.limit | 
| fs.s3.metadata.cache.expiration.seconds | fs.s3a.metadata.cache.expiration.seconds | 
| fs.s3.buffer.dir | fs.s3a.buffer.dir | 
| fs.s3.canned.acl | fs.s3a.acl.default | 
| fs.s3.positionedRead.optimization.enabled | fs.s3a.positionedRead.optimization.enabled | 
| fs.s3.readFullyIntoBuffers.optimization.enabled | fs.s3a.readFullyIntoBuffers.optimization.enabled | 
| fs.s3.signerType | fs.s3a.signing-algorithm | 
| fs.s3.storageClass | fs.s3a.create.storage.class | 
| fs.s3.threadpool.maxSize | fs.s3a.threads.max | 
| fs.s3.useRequesterPaysHeader | fs.s3a.requester.pays.enabled | 
| fs.s3n.block.size | fs.s3a.block.size | 
| fs.s3n.endpoint | fs.s3a.endpoint | 
| fs.s3n.ssl.enabled | fs.s3a.connection.ssl.enabled | 
| fs.s3.open.acceptsFileStatus | fs.s3a.open.acceptsFileStatus | 
| fs.s3.connection.maxIdleMilliSeconds | fs.s3a.connection.idle.time | 
| fs.s3.s3AccessGrants.enabled | fs.s3a.access.grants.enabled | 
| fs.s3.s3AccessGrants.fallbackToIAM | fs.s3a.access.grants.fallback.to.iam | 

### 考慮事項と制約事項
<a name="emr-s3a-migration-considerations-and-limitations"></a>
+ Spark、MapReduce、Flink、Tez、Hive などのすべての EMR エンジンは、Trino エンジンと Presto エンジンを除くデフォルトの S3 コネクタとして S3A を使用します。
+ EMR S3A は EMR Ranger との統合をサポートしていません。 AWS Lake Formation への移行を検討してください。
+ AWS RecordServer を使用した Lake Formation のサポート S3A を使用した EMR Spark 用 - Spark ネイティブ FGAC の使用を検討してください。
+ AWS S3 Select はサポートされていません。
+ 不完全なマルチパートアップロード (MPU) を定期的にクリーンアップするオプションは S3A では使用できません - ダングリング MPU をクリーンアップするように [S3 バケットライフサイクルポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を設定することを検討してください。
+ S3 CSE-CUSTOM 暗号化の使用中に EMRFS から S3A に移行するには、カスタムキープロバイダーを [EMRFSRSAEncryptionMaterialsProvider](https://github.com/awslabs/emr-sample-apps/tree/master/emrfs-plugins/EMRFSRSAEncryptionMaterialsProvider) インターフェイスから [Keyring インターフェイス](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/choose-keyring.html)に書き直す必要があります。詳細については、S3A の「[CSE-CUSTOM の設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-s3a-cse-custom.html)」を参照してください。
+ EMRFS を使用して作成された Amazon S3 ディレクトリには「\_$folder$」というサフィックスが付き、S3A ファイルシステムを使用して作成されたディレクトリには「/」というサフィックスが付きます。これは、 AWS S3 コンソールを使用して作成されたディレクトリと一致します。
+ カスタム S3 認証情報プロバイダーを使用するには、EMRFS 設定 `fs.s3.customAWSCredentialsProvider` で以前に使用されたものと同じ認証情報プロバイダークラスで S3A 設定プロパティ `fs.s3a.aws.credentials.provider` を設定します。

### サポートされていない EMRFS 設定
<a name="emr-s3a-migration-unsupported"></a>

以下の EMRFS 設定はサポートされていないか、古いものとして識別されているため、S3A 設定の対応する部分に直接マッピングは提供されません。これらの特定の設定は、S3A ファイルシステムへの移行中に自動的に変換または引き継がれることはありません。


**サポートされていない EMRFS の設定と理由**  
<a name="unsupported-emrfs-configs"></a>
<table>
<thead>
  <tr><th>EMRFS 設定名</th><th>サポートしない理由</th></tr>
</thead>
<tbody>
  <tr><td>fs.s3.consistent</td><td rowspan="30">Amazon S3 は「[強力な書き込み後の読み取り整合性](https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/)」を提供するため、EMRFS の整合性のあるビュー機能は不要です。</td></tr>
  <tr><td>fs.s3.consistent.dynamodb.endpoint</td></tr>
  <tr><td>fs.s3.consistent.fastFirstRetrySeconds</td></tr>
  <tr><td>fs.s3.consistent.fastList</td></tr>
  <tr><td>fs.s3.consistent.fastList.batchSize</td></tr>
  <tr><td>fs.s3.consistent.fastList.prefetchMetadata</td></tr>
  <tr><td>fs.s3.consistent.metadata.accessKey</td></tr>
  <tr><td>fs.s3.consistent.metadata.autoCreate</td></tr>
  <tr><td>fs.s3.consistent.metadata.capacity.autoIncrease</td></tr>
  <tr><td>fs.s3.consistent.metadata.capacity.autoIncrease.factor</td></tr>
  <tr><td>fs.s3.consistent.metadata.capacity.autoIncrease.maxRead</td></tr>
  <tr><td>fs.s3.consistent.metadata.capacity.autoIncrease.maxWrite</td></tr>
  <tr><td>fs.s3.consistent.metadata.conditional</td></tr>
  <tr><td>fs.s3.consistent.metadata.delete.ttl.enabled</td></tr>
  <tr><td>fs.s3.consistent.metadata.delete.ttl.expiration.seconds</td></tr>
  <tr><td>fs.s3.consistent.metadata.etag.verification.enabled</td></tr>
  <tr><td>fs.s3.consistent.metadata.read.capacity</td></tr>
  <tr><td>fs.s3.consistent.metadata.read.capacity.limit</td></tr>
  <tr><td>fs.s3.consistent.metadata.secretKey</td></tr>
  <tr><td>fs.s3.consistent.metadata.tableName</td></tr>
  <tr><td>fs.s3.consistent.metadata.write.capacity</td></tr>
  <tr><td>fs.s3.consistent.metadata.write.capacity.limit</td></tr>
  <tr><td>fs.s3.consistent.notification.CloudWatch</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS.batchSize</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS.customMsg</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS.pathReportLimit</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS.pullWaitTimeSeconds</td></tr>
  <tr><td>fs.s3.consistent.notification.SQS.queueName</td></tr>
  <tr><td>fs.s3.consistent.retryCount</td></tr>
  <tr><td>fs.s3.cse.cryptoStorageMode</td><td rowspan="4"> AWS SDK V1 を使用する EMRFS とは異なります。S3A は、これらのオプションがサポートされていない AWS SDK V2 を使用します。</td></tr>
  <tr><td>fs.s3.cse.cryptoStorageMode.deleteInstructionFiles.enabled</td></tr>
  <tr><td>fs.s3.cse.encryptionV2.enabled</td></tr>
  <tr><td>fs.s3.cse.materialsDescription.enabled</td></tr>
  <tr><td>fs.s3.multipart.clean.age.threshold</td><td rowspan="2">S3A では、不完全なマルチパートアップロード (MPU) を定期的にクリーンアップすることはできません。代わりに、ダングリング MPU をクリーンアップするように S3 [バケットライフサイクルポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を設定します。</td></tr>
  <tr><td>fs.s3.multipart.clean.enabled</td></tr>
  <tr><td>fs.s3.multipart.clean.jitter.max</td><td rowspan="4">この機能は、マルチパートアップロードスレッドがスタックしたり、低速になったりしないように追加されました。S3A は同様の問題を示さないため、必須ではありません。</td></tr>
  <tr><td>fs.s3.multipart.fraction.part.avg.completion.time</td></tr>
  <tr><td>fs.s3.multipart.part.attempts</td></tr>
  <tr><td>fs.s3.multipart.th.fraction.parts.completed</td></tr>
  <tr><td>fs.s3.instanceProfile.retryCount</td><td rowspan="31">これらは EMRFS 固有の設定であり、機能とアーキテクチャの違いにより S3A では不要です。</td></tr>
  <tr><td>fs.s3.instanceProfile.retryPeriodSeconds</td></tr>
  <tr><td>fs.s3.externalStagedFiles.maxActiveTasks</td></tr>
  <tr><td>fs.s3.folderObject.autoAction.disabled</td></tr>
  <tr><td>fs.s3.folderObject.autoInsert</td></tr>
  <tr><td>fs.s3.getObject.initialSocketTimeoutMilliseconds</td></tr>
  <tr><td>fs.s3.listFiles.incrementalFetch.enabled</td></tr>
  <tr><td>fs.s3.listFilesInOrder.includeDescendantsOfFiles</td></tr>
  <tr><td>fs.s3.listObjects.encodingType</td></tr>
  <tr><td>fs.s3.buckets.create.region</td></tr>
  <tr><td>fs.s3.configuration.load.enablebled</td></tr>
  <tr><td>fs.s3.create.allowFileNameEndsWithFolderSuffix</td></tr>
  <tr><td>fs.s3.open.lazyConnection.enabled</td></tr>
  <tr><td>fs.s3.region.fallback</td></tr>
  <tr><td>fs.s3.region.retryCount</td></tr>
  <tr><td>fs.s3.region.retryPeriodSeconds</td></tr>
  <tr><td>fs.s3.rename.algorithm.version</td></tr>
  <tr><td>fs.s3.requestHandler.classNames</td></tr>
  <tr><td>fs.s3.requestStatistics.enabled</td></tr>
  <tr><td>fs.s3.requestStatistics.sinks</td></tr>
  <tr><td>fs.s3.retryPeriodSeconds</td></tr>
  <tr><td>fs.s3.seekStrategy</td></tr>
  <tr><td>fs.s3.threadpool.buffer.size</td></tr>
  <tr><td>fs.s3.threadpool.maxSize</td></tr>
  <tr><td>fs.s3.useDirectoryHeaderAsFolderObject</td></tr>
  <tr><td>fs.s3n.filestatuscache.enable</td></tr>
  <tr><td>fs.s3.delete.retryCount</td></tr>
  <tr><td>fs.s3.s3AccessGrants.cacheSize</td></tr>
  <tr><td>fs.s3.s3AccessGrants.retryDelayBase</td></tr>
  <tr><td>fs.s3.s3AccessGrants.throttledRetryDelayBase</td></tr>
  <tr><td>fs.s3.s3AccessGrants.maxRetries</td></tr>
</tbody>
</table>
