

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

# 遷移指南：EMRFS 到 S3A 檔案系統
<a name="emr-s3a-migrate"></a>

從 EMR-7.10.0 版本開始，S3A Filesystem 是所有 S3 檔案結構描述之 EMR 叢集的預設檔案系統/s3 連接器，包括下列項目：
+ **s3：//**
+ **s3n：//**
+ **s3a：//**

此變更適用於所有 EMR 部署，包括 EC2、EKS 和 EMR Serverless。

如果您想要繼續使用 EMRFS，您可以將下列屬性新增至`core-site.xml`組態檔案來設定此屬性：

```
<property>
  <name>fs.s3.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 之間實作自動組態映射。當 S3A 組態未定義，而對應的 EMRFS 組態存在時，映射程序會自動發生。此自動映射功能可延伸至儲存貯體層級組態，實現 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>
```

**注意**  
只有在任一檔案系統上啟用 SSE-KMS 或 CSE-KMS 加密時，才會發生從 EMRFS (fs.s3.serverSideEncryption.kms.keyId 或 fs.s3.cse.kms.keyId) 到 S3A (fs.s3a.encryption.key) 的加密金鑰映射。


**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>
+ 所有 EMR 引擎 – Spark、MapReduce、Flink、Tez、Hive 等將使用 S3A 作為預設 S3 連接器，但 Trino 和 Presto 引擎除外。
+ EMR S3A 不支援與 EMR Ranger 整合。考慮遷移至 AWS Lake Formation。
+ AWS 不支援使用 RecordServer for EMR Spark 搭配 S3A 的 Lake Formation 支援 - 請考慮使用 Spark 原生 FGAC。
+ 不支援AWS S3 Select。
+ S3A 不提供定期清除未完成分段上傳 (MPU) 的選項 - 請考慮設定 [S3 儲存貯體生命週期政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)來清除懸置MPUs。
+ 為了在使用 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)。 S3 如需詳細資訊，請參閱設定 S3A [CSE-CUSTOM](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-s3a-cse-custom.html)。
+ 使用 EMRFS 建立的 Amazon S3 目錄會以 '\$1\$1folder\$1' 尾碼標記，而使用 S3A 檔案系統建立的目錄則以 '/' 尾碼結尾，這與透過 AWS S3 主控台建立的目錄一致。
+ 若要使用自訂 S3 憑證提供者，請使用先前在 EMRFS 組態 中使用的`fs.s3a.aws.credentials.provider`相同憑證提供者類別來設定 S3A 組態屬性`fs.s3.customAWSCredentialsProvider`。

### 不支援的 EMRFS 組態
<a name="emr-s3a-migration-unsupported"></a>

下列 EMRFS 組態已識別為不支援或已淘汰，因此不會將直接映射提供給其 S3A 組態對等部分。這些特定組態不會在遷移至 S3A 檔案系統期間自動翻譯或轉移。


**不支援的 EMRFS 組態和原因**  
<a name="unsupported-emrfs-configs"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ReleaseGuide/emr-s3a-migrate.html)