Carga de datos en Amazon S3 Express One Zone - 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.

Carga de datos en Amazon S3 Express One Zone

Descripción general

A partir de la versión 6.15.0 de Amazon EMR, puede utilizar Amazon EMR con Apache Spark junto con la clase de almacenamiento Amazon S3 Express One Zone para mejorar el rendimiento de sus trabajos de Spark. Las versiones 7.2.0 y posteriores de Amazon EMR también son compatibles con HBase Flink y Hive, por lo que también puede beneficiarse de S3 Express One Zone si utiliza estas aplicaciones. S3 Express One Zone es una clase de almacenamiento de S3 para aplicaciones que acceden con frecuencia a los datos con cientos de miles de solicitudes por segundo. En el momento de su lanzamiento, S3 Express One Zone ofrece el almacenamiento de objetos en la nube con la latencia más baja y el rendimiento más alto de Amazon S3.

Requisitos previos

  • Permisos de S3 Express One Zone: cuando S3 Express One Zone realiza a una acción como GET, LIST o PUT en un objeto de S3, la clase de almacenamiento llama a CreateSession en su nombre. Su política de IAM debe permitir el permiso para que s3express:CreateSession S3A el conector puede invocar la CreateSession API. Para ver un ejemplo de política con ese permiso, consulte Introducción a Amazon S3 Express One Zone.

  • S3A conector: para configurar su clúster de Spark para acceder a los datos de un depósito de Amazon S3 que utiliza la clase de almacenamiento S3 Express One Zone, debe usar el conector Apache Hadoop S3A. Para usar el conector, asegúrese de que todos los S3 URIs utilicen el s3a esquema. Si no es así, puede cambiar la implementación del sistema de archivos que utiliza para los esquemas s3 y s3n.

Para cambiar el esquema s3, especifique las siguientes configuraciones de clúster:

[ { "Classification": "core-site", "Properties": { "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

Para cambiar el esquema s3n, especifique las siguientes configuraciones de clúster:

[ { "Classification": "core-site", "Properties": { "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

Introducción a Amazon S3 Express One Zone

Creación de una política de permisos

Antes de poder crear un clúster que utilice Amazon S3 Express One Zone, debe crear una política de IAM para adjuntarla al perfil de EC2 instancia de Amazon del clúster. La política debe tener permisos para acceder a la clase de almacenamiento S3 Express One Zone. En la siguiente política de ejemplo, se muestra cómo conceder los permisos necesarios. Después de crear la política, adjúntela al rol de perfil de instancia que utilice para crear su clúster de EMR, tal y como se describe en la sección Creación y configuración de un clúster.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3express:region-code:account-id:bucket/amzn-s3-demo-bucket", "Action": [ "s3express:CreateSession" ] } ] }

Creación y configuración de un clúster

A continuación, cree un clúster que ejecute Spark HBase, Flink o Hive con S3 Express One Zone. En los siguientes pasos, se ofrece información general de alto nivel para crear un clúster en la AWS Management Console:

  1. Navegue hasta la consola de Amazon EMR y seleccione Clústeres en la barra lateral. A continuación, elija Crear clúster.

  2. Si utiliza Spark, seleccione la versión emr-6.15.0 o posterior de Amazon EMR. Si usas HBase Flink o Hive, selecciona o una opción superior. emr-7.2.0

  3. Seleccione las aplicaciones que desee incluir en el clúster, como Spark o HBase Flink.

  4. Para habilitar Amazon S3 Express One Zone, introduzca una configuración similar a la del siguiente ejemplo en la sección Configuración de software. Las configuraciones y los valores recomendados se describen en la sección Información general sobre las configuraciones que sigue a este procedimiento.

    [ { "Classification": "core-site", "Properties": { "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider", "fs.s3a.change.detection.mode": "none", "fs.s3a.endpoint.region": "aa-example-1", "fs.s3a.select.enabled": "false" } }, { "Classification": "spark-defaults", "Properties": { "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  5. En la sección Perfil de EC2 instancia para Amazon EMR, elija usar un rol existente y use un rol con la política adjunta que creó en la Creación de una política de permisos sección anterior.

  6. Configure el resto de los ajustes del clúster según corresponda para su aplicación y, a continuación, seleccione Crear clúster.

Información general sobre las configuraciones

En las siguientes tablas, se describen las configuraciones y los valores sugeridos que debe especificar al configurar un clúster que utiliza S3 Express One Zone con Amazon EMR, tal y como se describe en la sección Creación y configuración de un clúster.

S3A configuraciones

Parámetro Valor predeterminado Valor sugerido Explicación

fs.s3a.aws.credentials.provider

Si no se especifica, se utiliza AWSCredentialProviderList en el siguiente orden: TemporaryAWSCredentialsProvider, SimpleAWSCredentialsProvider, EnvironmentVariableCredentialsProvider, IAMInstanceCredentialsProvider.

software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider

El rol de perfil de instancia de Amazon EMR debe tener la política que permita S3A sistema de archivos al que llamar. s3express:CreateSession Otros proveedores de credenciales también funcionan si tienen los permisos de S3 Express One Zone.

fs.s3a.endpoint.region

null

El Región de AWS lugar donde creaste el depósito.

La lógica de resolución regional no funciona con la clase de almacenamiento S3 Express One Zone.

fs.s3a.select.enabled

true

false

select de Amazon S3 no es compatible con la clase de almacenamiento S3 Express One Zone.

fs.s3a.change.detection.mode

server

none

Detección de cambios por S3A funciona comprobando MD5basadoetags. La clase de almacenamiento S3 Express One Zone no es compatible MD5 checksums.

Spark configuraciones

Parámetro Valor predeterminado Valor sugerido Explicación

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

La optimización interna utiliza un parámetro de API de S3 que la clase de almacenamiento S3 Express One Zone no admite.

Hive configuraciones

Parámetro Valor predeterminado Valor sugerido Explicación

hive.exec.fast.s3.partition.discovery.enabled

true

false

La optimización interna utiliza un parámetro de API de S3 que la clase de almacenamiento S3 Express One Zone no admite.

Consideraciones

Tenga en cuenta lo siguiente al integrar Apache Spark en Amazon EMR con la clase de almacenamiento S3 Express One Zone:

  • Se requiere el conector S3A para utilizar S3 Express One Zone con Amazon EMR. Solo S3A tiene las características y las clases de almacenamiento necesarias para interactuar con S3 Express One Zone. Para ver los pasos para configurar el conector, consulte Requisitos previos.

  • La clase de almacenamiento Amazon S3 Express One Zone solo es compatible con Spark en un clúster de Amazon EMR que se ejecute en Amazon. EC2

  • La clase de almacenamiento Amazon S3 Express One Zone solo admite SSE-S3 cifrado. Para obtener más información, consulte Cifrado del servidor con claves administradas por Amazon S3 (SSE-S3).

  • La clase de almacenamiento Amazon S3 Express One Zone no es compatible con la escritura con el FileOutputCommitter de S3A. Si se escribe con el S3A FileOutputCommitter en los buckets de S3 Express One Zone, se produce un error: InvalidStorageClass: The storage class you specified is not valid.

  • Amazon S3 Express One Zone es compatible con las versiones 6.15.0 y posteriores de Amazon EMR a partir de EMR. EC2 Además, es compatible con las versiones 7.2.0 y posteriores de Amazon EMR en Amazon EMR con EKS y en Amazon EMR sin servidor.