As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Guia de migração: EMRFS para o Sistema de arquivos S3A
Começando na versão EMR-7.10.0, o Sistema de arquivos S3A é o conector padrão de sistema de arquivos/S3 para clusters do EMR em todos os esquemas de arquivos do S3, entre eles:
s3://
s3n://
s3a://
Essa alteração é aplicável a todas as implantações do EMR, incluindo o EC2, o EKS e o EMR Sem Servidor.
Se quiser continuar usando o EMRFS, você pode configurar isso adicionando a seguinte propriedade ao arquivo de configuração core-site.xml:
<property> <name>fs.s3.impl</name> <value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value> </property>
Migração das configurações existentes do EMRFS para configurações do S3A
nota
O Amazon EMR implementa o mapeamento automático de configurações entre o EMRFS e o S3A quando condições específicas são atendidas. O processo de mapeamento ocorre automaticamente quando as configurações do S3A são indefinidas, enquanto as configurações correspondentes do EMRFS estão presentes. Essa funcionalidade de mapeamento automático se estende às configurações em nível de bucket, permitindo uma integração perfeita entre as configurações do EMRFS e do S3A. Como ilustração, quando você define uma configuração de criptografia específica do bucket no EMRFS usando “fs.s3.bucket.amzn-s3-demo-bucket1.serverSideEncryption.kms.keyId” com um valor de “XYZ”, o sistema mapeia isso automaticamente para a configuração equivalente do S3A, definindo “fs.s3a.encryption.key” como “XYZ” para o bucket especificado amzn-s3-demo-bucket1.
O seguinte conjunto predefinido de configurações do EMRFS será automaticamente convertido em seus respectivos equivalentes de configuração do S3A. Todas as configurações atualmente implementadas por meio de substituições de cluster ou de trabalho farão a transição perfeita para o sistema de arquivos S3A sem exigir configurações ou modificações manuais adicionais.
Por padrão, esse recurso de mapeamento de configurações é ativado automaticamente. Os usuários que desejam desabilitar essa conversão automática podem fazer isso adicionando a seguinte propriedade ao arquivo de configuração core-site.xml.
<property> <name>fs.s3a.emrfs.compatibility.enable</name> <value>false</value> </property>
nota
O mapeamento da chave de criptografia do EMRFS ((fs.s3.serverSideEncryption.kms.keyId ou fs.s3.cse.kms.keyId) para o S3A (fs.s3a.encryption.key) ocorre apenas quando a criptografia SSE-KMS ou CSE-KMS está habilitada em qualquer sistema de arquivos.
| Nome da configuração do EMRFS | Nome da configuração do 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 |
Condições e limitações
-
Todos os mecanismos do EMR (Spark, MapReduce, Flink, Tez, Hive etc.) usarão o S3A como o conector do S3 padrão, com exceção do Trino e Presto.
-
O EMR S3A não oferece suporte para integração com o EMR Ranger. Considere migrar para o AWS Lake Formation.
-
Não há suporte para o AWS Lake Formation com RecordServer para EMR Spark com S3A - Considere usar o FGAC nativo do Spark.
-
Não há suporte para o AWS S3 Select.
-
A opção de limpar periodicamente uploads em várias partes (MPU) incompletos não está disponível com o S3A - Considere configurar a política de ciclo de vida de buckets do S3 para limpar MPUs pendentes.
-
Para migrar do EMRFS para o S3A usando a criptografia CSE-CUSTOM do S3, o provedor de chaves personalizadas precisa ser reescrito da interface EMRFSRSAEncryptionMaterialsProvider
para a interface Keyring. Consulte a configuração de CSE-CUSTOM do S3A para obter mais informações. Os diretórios do Amazon S3 criados usando o EMRFS são marcados com o sufixo “_$folder$”, enquanto os diretórios criados usando o sistema de arquivos S3A terminam com o sufixo “/”, que é consistente com os diretórios criados por meio do console do AWS S3.
Para usar um provedor de credenciais personalizadas do S3, defina a propriedade de configuração do S3A
fs.s3a.aws.credentials.providercom a mesma classe de provedor de credenciais usada anteriormente na configuraçãofs.s3.customAWSCredentialsProviderdo EMRFS.
Configurações do EMRFS sem suporte
As seguintes configurações do EMRFS foram identificadas como sem suporte ou obsoletas e, consequentemente, nenhum mapeamento direto será fornecido para suas contrapartes de configuração do S3A. Essas configurações específicas não serão convertidas ou transferidas automaticamente durante a migração para o sistema de arquivos S3A.
| Nome da configuração do EMRFS | Motivo para a ausência de suporte |
|---|---|
| fs.s3.consistent | Como o Amazon S3 oferece forte consistência de leitura após gravação |
| 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 | Ao contrário do EMRFS, que usa o AWS SDK V1. O S3A usa o AWS SDK V2, no qual não há suporte para essas opções. |
| fs.s3.cse.cryptoStorageMode.deleteInstructionFiles.enabled | |
| fs.s3.cse.encryptionV2.enabled | |
| fs.s3.cse.materialsDescription.enabled | |
| fs.s3.multipart.clean.age.threshold | A opção de limpar periodicamente uploads em várias partes (MPU) incompletos não está disponível com o S3A. Em vez disso, configure a política de ciclo de vida de buckets do S3 para limpar MPUs pendentes. |
| fs.s3.multipart.clean.enabled | |
| fs.s3.multipart.clean.jitter.max | O recurso foi adicionado para evitar que threads de uploads em várias partes fiquem presos ou lentos. O S3A não apresenta um problema semelhante e, portanto, o recurso não é necessário. |
| fs.s3.multipart.fraction.part.avg.completion.time | |
| fs.s3.multipart.part.attempts | |
| fs.s3.multipart.th.fraction.parts.complete | |
| fs.s3.instanceProfile.retryCount | Essas são configurações específicas do EMFS que não são necessárias no S3A devido a diferenças de funcionalidade e arquitetura. |
| 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.enabled | |
| 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 |