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.
| 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.providercon la misma clase de proveedor de credenciales que se utilizó anteriormente en la configuración de EMRFSfs.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.
| 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 |
| 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 |