Guía de migración: EMRFS al sistema de archivos S3A - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Guía de migración: EMRFS al sistema de archivos S3A

A partir de la versión EMR-7.10.0, el sistema de archivos S3A es el conector predeterminado de filesystem/s3 para los clústeres de EMR para todos los esquemas de archivos de S3, incluidos los siguientes:

  • S3 de3://

  • s3n://

  • s3a://

Este cambio se aplica a todas las implementaciones de EMR, incluidas EC2, EKS y EMR sin servidor.

Si desea seguir utilizando EMRFS, puede configurarlo agregando la siguiente propiedad al archivo de configuración core-site.xml:

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

Migración de las configuraciones de EMRFS existentes a las configuraciones de S3A

nota

Amazon EMR implementa una asignación de configuración automático entre EMRFS y S3A cuando se cumplen condiciones específicas. El proceso de asignación se produce automáticamente cuando las configuraciones de S3A no están definidas, mientras que las configuraciones de EMRFS correspondientes están presentes. Esta funcionalidad de asignación automática se extiende a las configuraciones a nivel de bucket, lo que permite una integración perfecta entre las configuraciones de EMRFS y S3A. A modo ilustrativo, al momento de ajustar una configuración de cifrado específica de un bucket en EMRFS con 'fs.s3.bucket.amzn-s3-demo-bucket1.serverSideEncryption.kms.keyId' con un valor “XYZ”, el sistema lo asigna automáticamente a la configuración S3A equivalente al establecer 'fs.s3a.encryption.key' en “XYZ” para el bucket especificado amzn-s3-demo-bucket1.

El siguiente conjunto predefinido de configuraciones de EMRFS se traducirá automáticamente a sus correspondientes equivalentes de configuración de S3A. Cualquier configuración que se implemente actualmente mediante la anulación de clústeres o tareas pasará sin problemas al sistema de archivos del S3A sin necesidad de realizar modificaciones o configuraciones manuales adicionales.

De forma predeterminada, esta característica de asignación de configuración se activa automáticamente. Los usuarios que deseen deshabilitar esta traducción automática pueden hacerlo al agregar la siguiente propiedad al archivo de configuración core-site.xml.

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

La asignación de claves de cifrado de EMRFS (fs.s3.serverSideEncryption.kms.keyId o fs.s3.cse.kms.keyId) a S3A (fs.s3a.encryption.key) solo se produce cuando el cifrado SSE-KMS o CSE-KMS está habilitado en cualquiera de los sistemas de archivos.

Asignación de configuración de EMRFS a S3A
Nombre de la configuración EMRFS Nombre de la configuración 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

Condiciones y limitaciones

  • Todos los motores de EMR (Spark, MapReduce, Flink, Tez, Hive, etc.) utilizarán el S3A como conector S3 predeterminado, excepto Trino y Presto.

  • EMR S3A no admite la integración con EMR Ranger. Considere migrar a AWS Lake Formation.

  • No se admite el soporte de AWS Lake Formation con RecordServer para EMR Spark con S3A. Considere la posibilidad de utilizar el FGAC nativo de Spark.

  • AWS S3 Select no es compatible.

  • S3A no dispone de la opción de limpiar periódicamente las cargas multiparte incompletas (MPU). Considere la posibilidad de configurar una política de ciclo de vida de los bucket de S3 para limpiar las MPU pendientes.

  • Para migrar de EMRFS a S3A con el cifrado S3 CSE-CUSTOM, es necesario reescribir el proveedor de claves personalizadas de la interfaz EMRFSRSAEncryptionMaterialsProvider a la Keyring. Consulte la configuración de CSE-CUSTOM de S3A para obtener más información.

  • Los directorios de Amazon S3 creados con EMRFS se marcan con un sufijo '_$folder$', mientras que los directorios creados con el sistema de archivos S3A terminan con un sufijo '/', que es coherente con los directorios creados a través de la consola AWS S3.

  • Para usar un proveedor de credenciales personalizado de S3, defina la propiedad de configuración de S3A fs.s3a.aws.credentials.provider con la misma clase de proveedor de credenciales que se utilizó anteriormente en la configuración de EMRFS fs.s3.customAWSCredentialsProvider.

Configuraciones de EMRFS no compatibles

Las siguientes configuraciones de EMRFS se identificaron como no compatibles u obsoletas y, en consecuencia, no se proporcionará ninguna asignación directa a sus homólogas de configuración S3A. Estas configuraciones específicas no se traducirán ni transferirán automáticamente durante la migración al sistema de archivos S3A.

Configuraciones y motivos de EMRFS no compatibles
Nombre de configuración de EMRFS Motivo por el que no se admite
fs.s3.consistent Amazon S3 ofrece una sólida coherencia de lectura posterior a la escritura y, por lo tanto, no es necesaria la característica de visualización coherente de 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 A diferencia de EMRFS, que usa AWS SDK V1, S3A usa AWS SDK V2, donde estas opciones no son compatibles.
fs.s3.cse.cryptoStorageMode.deleteInstructionFiles.enabled
fs.s3.cse.encryptionV2.enabled
fs.s3.cse.materialsDescription.enabled
fs.s3.multipart.clean.age.threshold S3A no permite limpiar periódicamente las cargas multiparte (MPU) incompletas. En su lugar, configure la política de ciclo de vida de los buckets de S3 para limpiar las MPU pendientes.
fs.s3.multipart.clean.enabled
fs.s3.multipart.clean.jitter.max La característica se agregó para evitar que los subprocesos de carga multiparte se atasquen o se vuelvan lentos. S3A no presenta un problema similar y, por lo tanto, no es obligatorio.
fs.s3.multipart.fraction.part.avg.completion.time
fs.s3.multipart.part.attempts
fs.s3.multipart.th.fraction.parts.completed
fs.s3.instanceProfile.retryCount Se trata de configuraciones específicas de EMRFS que no son necesarias en S3A debido a diferencias de funcionalidad y arquitectura.
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.enabled
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