遷移指南:EMRFS 到 S3A 檔案系統 - Amazon EMR

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

遷移指南:EMRFS 到 S3A 檔案系統

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

  • s3://

  • s3n://

  • s3a://

此變更適用於所有 EMR 部署,包括 EC2、EKS 和 EMR Serverless、Glue ETL 環境。

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

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

將現有 EMRFS 組態遷移至 S3A 組態

下列預先定義的一組 EMRFS 組態會自動轉譯為其對應的 S3A 組態對等項目。目前透過叢集或任務覆寫實作的任何組態都會順暢地轉換為 S3A 檔案系統,而不需要額外的手動組態或修改。

根據預設,此組態映射功能會自動啟用。想要停用此自動轉譯的使用者可以透過將下列屬性新增至 core-site.xml 組態檔案來執行此操作。

<property> <name>fs.s3a.emrfs.compatibility.enable</name> <value>false</value> </property>
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.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

考量事項與限制

  • 所有 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 儲存貯體生命週期政策來清除懸置MPUs。

  • 為了在使用 S3 CSE-CUSTOM 加密時從 EMRFS 遷移到 S3A,自訂金鑰提供者需要從 EMRFSRSAEncryptionMaterialsProvider 界面重寫到 Keyring 界面。 S3 如需詳細資訊,請參閱設定 S3A CSE-CUSTOM

  • 使用 EMRFS 建立的 Amazon S3 目錄會以 '_$folder$' 尾碼標示,而使用 S3A 檔案系統建立的目錄則以 '/' 尾碼結尾,這與透過 AWS S3 主控台建立的目錄一致。

  • 若要使用自訂 S3 憑證提供者,請使用先前在 EMRFS 組態 中使用的fs.s3a.aws.credentials.provider相同憑證提供者類別來設定 S3A 組態屬性fs.s3.customAWSCredentialsProvider

不支援的 EMRFS 組態

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

不支援的 EMRFS 組態和原因
EMRFS Config 名稱 不支援的原因
fs.s3.consistent Amazon S3 提供強大的read-after-write一致性,因此不需要 EMRFS 一致性檢視功能。
fs.s3.consistent.dynamodb.endpoint
fs.s3.consistent.fastFirstRetrySeconds
fs.s3.consistent.fastList
fs.s3.consistent.fastList.batchSize
fs.s3.consistent.fastList.prefetchMetadata
fs.s3.consistent.metadata.accessKey
fs.s3.consistent.metadata.autoCreate
fs.s3.consistent.metadata.capacity.autoIncrease
fs.s3.consistent.metadata.capacity.autoIncrease.factor
fs.s3.consistent.metadata.capacity.autoIncrease.maxRead
fs.s3.consistent.metadata.capacity.autoIncrease.maxWrite
fs.s3.consistent.metadata.conditional
fs.s3.consistent.metadata.delete.ttl.enabled
fs.s3.consistent.metadata.delete.ttl.expiration.seconds
fs.s3.consistent.metadata.etag.verification.enabled
fs.s3.consistent.metadata.read.capacity
fs.s3.consistent.metadata.read.capacity.limit
fs.s3.consistent.metadata.secretKey
fs.s3.consistent.metadata.tableName
fs.s3.consistent.metadata.write.capacity
fs.s3.consistent.metadata.write.capacity.limit
fs.s3.consistent.notification.CloudWatch
fs.s3.consistent.notification.SQS
fs.s3.consistent.notification.SQS.batchSize
fs.s3.consistent.notification.SQS.customMsg
fs.s3.consistent.notification.SQS.pathReportLimit
fs.s3.consistent.notification.SQS.pullWaitTimeSeconds
fs.s3.consistent.notification.SQS.queueName
fs.s3.consistent.retryCount
fs.s3.cse.cryptoStorageMode 與使用 AWS SDK V1 的 EMRFS 不同。S3A 使用不支援這些選項的 AWS SDK V2。
fs.s3.cse.cryptoStorageMode.deleteInstructionFiles.enabled
fs.s3.cse.encryptionV2.enabled
fs.s3.cse.materialsDescription.enabled
fs.s3.multipart.clean.age.threshold 定期清除不完整的分段上傳 (MPU) 不適用於 S3A - 而是設定 S3 儲存貯體生命週期政策來清除懸置MPUs。
fs.s3.multipart.clean.enabled
fs.s3.multipart.clean.jitter.max 已新增此功能,以避免分段上傳執行緒卡住或變慢。S3A 不會引發類似問題,因此不需要。
fs.s3.multipart.fraction.part.avg.completion.time
fs.s3.multipart.part.attempts
fs.s3.multipart.th.fraction.parts.completed
fs.s3.instanceProfile.retryCount 這些是 S3A 中由於功能和架構差異而不需要的 EMRFS 特定組態。
fs.s3.instanceProfile.retryPeriodSeconds
fs.s3.externalStagedFiles.maxActiveTasks
fs.s3.folderObject.autoAction.disabled
fs.s3.folderObject.autoInsert
fs.s3.getObject.initialSocketTimeoutMilliseconds
fs.s3.listFiles.incrementalFetch.enabled
fs.s3.listFilesInOrder.includeDescendantsOfFiles
fs.s3.listObjects.encodingType
fs.s3.buckets.create.region
fs.s3.configuration.load.enablebled
fs.s3.create.allowFileNameEndsWithFolderSuffix
fs.s3.open.lazyConnection.enabled
fs.s3.region.fallback
fs.s3.region.retryCount
fs.s3.region.retryPeriodSeconds
fs.s3.rename.algorithm.version
fs.s3.requestHandler.classNames
fs.s3.requestStatistics.enabled
fs.s3.requestStatistics.sinks
fs.s3.retryPeriodSeconds
fs.s3.seekStrategy
fs.s3.threadpool.buffer.size
fs.s3.threadpool.maxSize
fs.s3.useDirectoryHeaderAsFolderObject
fs.s3n.filestatuscache.enable
fs.s3.delete.retryCount
fs.s3.s3AccessGrants.cacheSize
fs.s3.s3AccessGrants.retryDelayBase
fs.s3.s3AccessGrants.throttledRetryDelayBase
fs.s3.s3AccessGrants.maxRetries