本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
迁移指南:EMRFS 到 S3A 文件系统
从 EMR-7.10.0 版本开始,S3A 文件系统是所有 S3 文件方案的 EMR 集群的默认文件系统/s3 连接器,包括以下内容:
s3://
s3n://
s3a://
此更改适用于所有 EMR 部署,包括 EKS 和 EMR Serverless EC2、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 配置名称 |
---|---|
fs.s3.aimd.adjust 窗口 | fs.s3a.aimd.adjust 窗口 |
fs.s3.aimd.enabled | fs.s3a.aimd.enabled |
fs.s3.aimd.增加增量 | fs.s3a.aimd.增加增量 |
fs.s3.aimd.initialRate | fs.s3a.aimd.initialRate |
fs.s3.aimd.max尝试次数 | fs.s3a.aimd.max尝试次数 |
fs.s3.aimd.minrate | fs.s3a.aimd.minrate |
fs.s3.aimd.还原系数 | fs.s3a.aimd.还原系数 |
fs.s3.sts.endpoint | fs.s3a.assumed.role.sts.endpoint |
fs.s3.sts。 sessionDurationSeconds | fs.s3a.assumed.role.session.duration |
fs.s3.授权.rolemapping | fs.s3a.授权.rolemapping |
fs.s3.authorization.ugi.groupname.enabled | fs.s3a.authorization.ugi.groupname.enabled |
fs.3。 credentialsResolverClass | fs.s3a.credentials.resolver |
fs.s3n.multipart.uploads.enable | fs.s3a.multipart.uploads.enable |
fs.s3n.multipart.uploads.split.size | fs.s3a.multipart.size |
fs.3。 serverSideEncryption.kms。 customEncryptionContext | fs.s3a.加密.contextion |
fs.3。 enableServerSide加密 | fs.s3a.加密算法 |
fs.3。 serverSideEncryption.kms.keyid | fs.s3a.encryption.key |
fs.s3.cse.kms.region | fs.s3a.encryption.cse.kms.region |
fs.s3.authorization.audit.abled | fs.s3a.authorization.audit.abled |
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.max连接数 | fs.s3a.连接.maximum |
fs.s3.max重试次数 | 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.positiedread.Optimization.enabled | fs.s3a.positiedread.Optimization.enabled |
fs.3。 readFullyInto缓冲区 > 优化 > 已启用 | fs.s3a。 readFullyInto缓冲区 > 优化 > 已启用 |
fs.s3.signerType | fs.s3a.签名算法 |
fs.s3.StorageClass | fs.s3a.create.storage.class |
fs.s3.threadpool.maxSize | fs.s3a.threads.max |
fs.3。 useRequesterPays标题 | 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。 maxIdleMilli秒 | fs.s3a.connection.idle.time |
fs.s3.s3 .enabled AccessGrants | fs.s3a.access.grants.enabled |
fs.s3.s3 .fallbacktoIAM AccessGrants | fs.s3a.access.grants.fallback.to.iam |
注意事项和限制
-
除 Trino 和 Presto 引擎外,所有 EMR 引擎 —— Spark MapReduce、Flink、Tez、Hive 等,都将使用 S3A 作为默认 S3 连接器。
-
EMR S3A 不支持与 EMR Ranger 集成。考虑迁移到 AWS Lake Formation。
-
AWS 不支持带有 S3A RecordServer 的 EMR Spark 的 Lake Formation 支持——可以考虑使用 Spark Native FGAC。
-
AWS 不支持 S3 选择。
-
S3A 不提供定期清理未完成的多段上传 (MPU) 的选项-请考虑配置 S3 存储桶生命周期策略来清理悬空。 MPUs
-
为了在使用 S3 CSE-CUSTOM 加密时从 EMRFS 迁移到 S3A,需要将自定义密钥提供程序从接口重写到密钥环接口。EMRFSRSAEncryptionMaterialsProvider
有关更多信息,请参阅设置 S3A CSE-CUSTOM。 使用 EMRFS 创建的 Amazon S3 目录标有 “_$folder$” 后缀,而使用 S3A 文件系统创建的目录以 “/” 后缀结尾,这与通过 S3 控制台创建的目录一致。 AWS
要使用自定义 S3 凭证提供程序,请将 S3A 配置属性
fs.s3a.aws.credentials.provider
设置为之前在 EMRFS 配置中使用的相同凭证提供程序类别。fs.s3.customAWSCredentialsProvider
不支持的 EMRFS 配置
以下 EMRFS 配置已被确定为不支持或已过时,因此不会提供与其 S3A 配置对应的直接映射。在迁移到 S3A 文件系统的过程中,这些特定的配置不会被自动转换或延续。
EMRFS Config 名称 | 不支持的原因 |
---|---|
fs.s3. 一致 | Amazon S3 具有很强 read-after-write的一致性 |
fs.s3 一致性.dynamodb.endpoint | |
fs.s3. 一致。 fastFirstRetry秒 | |
fs.s3. 一致性.fastList | |
fs.s3 一致.fastlist.batchSize | |
fs.s3.consitent.fastlist.prefetchMetadata | |
fs.s3.constinent.metadata.accessKey | |
fs.s3.constinent.metadata.autoCreate | |
fs.s3 一致性.metadata.capacitay.capacity.auto | |
fs.s3. 一致性.metadata.capacita.capacity.autoinge | |
fs.s3.consitent.metadata.capacitay.autoingexe.max | |
fs.s3.consitent.metadata.capacita.capacity.autoing | |
fs.s3. 一致性.metadata.conditional | |
fs.s3.consitent.metadata.delete.ttl.enabled | |
fs.s3. 一致性.metadata.delete.ttl.expiration.seconds | |
fs.s3.consitent.metadata.etag.verification.enabled | |
fs.s3. 一致性.metadata.read.capacity | |
fs.s3 一致性.metadata.read.capacity.limit | |
fs.s3. 一致性.metadata.secretKey | |
fs.s3.consitent.metadata.tableName | |
fs.s3. 一致性.metadata.write.capacite | |
fs.s3. 一致性.metadata.write.capacite.capacity.li | |
fs.s3. 一致的通知。 CloudWatch | |
fs.s3.consticent.notification.sqs | |
fs.s3.consticent.notification.sqs.batchSize | |
fs.s3.consticent.notification.sqs.customMsg | |
fs.s3.consticent.notification.sqs。 pathReportLimit | |
fs.s3.consticent.notification.sqs。 pullWaitTime秒 | |
fs.s3.consticent.notification.squeueName | |
fs.s3.一致.retryCount | |
fs.s3.cse。 cryptoStorageMode | 与使用 S AWS DK V1 的 EMRFS 不同。S3A 使用不支持这些选项的 AWS SDK V2。 |
fs.s3.cse。 cryptoStorageMode。 deleteInstructionFiles. 已启用 | |
fs.s3.cse.encryptionv2.enabled | |
fs.s3.cse.materialsDescription.en | |
fs.s3.multipart.clean.age.thresh | 定期清理未完成的多段上传 (MPU) 不适用于 S3A,而是配置 S3 存储桶生命周期策略以清理悬空。 MPUs |
fs.s3.multipart.clean.enabled | |
fs.s3.multipart.clean.jitter.max | 添加该功能是为了避免多部分上传线程卡住或变慢。S3A 没有遇到类似的问题,因此不是必需的。 |
fs.s3.multipart.fraction.part.part.avg.completi | |
fs.s3.multipart.part.parts | |
fs.s3.multipart.th.fraction.parts.part | |
fs.s3.实例配置文件.retryCount | 这些是 EMRFS 特定的配置,由于功能和架构的差异,S3A 中不需要这些配置。 |
fs.s3. 实例配置文件。 retryPeriodSeconds | |
fs.3。 externalStagedFiles。 maxActiveTasks | |
fs.s3.folderObject.autoaction.dis | |
fs.s3.folderObject.autoInser | |
fs.s3.getObject。 initialSocketTimeout毫秒 | |
fs.s3.listfiles.incrementalFetch.enabled | |
fs.3。 listFilesIn订购。 includeDescendantsOf档案 | |
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.algorith.version | |
fs.s3.requestHandler.classNames | |
fs.s3. 请求统计信息。已启用 | |
fs.s3.requestistics.sinks | |
fs.3。 retryPeriodSeconds | |
fs.s3.seekStrategy | |
fs.s3.threadpool.buffer.size | |
fs.s3.threadpool.maxSize | |
fs.3。 useDirectoryHeaderAsFolderObject | |
fs.s3n.filestatuscache.enable | |
fs.s3.delete.retryCount | |
fs.s3.s3 .cacheSize AccessGrants | |
fs.s3.s3。AccessGrants retryDelayBase | |
fs.s3.s3。AccessGrants throttledRetryDelay基地 | |
fs.s3.s3 .maxRetries AccessGrants |