Amazon S3 en Outposts con Amazon EMR en Outposts local - Amazon Simple Storage Service

Amazon S3 en Outposts con Amazon EMR en Outposts local

Amazon EMR es una plataforma de clúster administrada que simplifica la ejecución de marcos de macrodatos, tales como Apache Hadoop y Apache Spark en AWS para procesar y analizar grandes cantidades de datos. Mediante el uso de estos marcos de trabajo y proyectos de código abierto relacionados, puede procesar datos para fines de análisis y cargas de trabajo de inteligencia empresarial. Además, Amazon EMR permite transformar y trasladar grandes cantidades de datos hacia y desde otros almacenes y bases de datos de AWS, como Amazon S3 en Outposts. Para obtener más información sobre Amazon EMR, consulte Clústeres de EMR en AWS Outposts en la Guía de administración de Amazon EMR.

Para Amazon S3 en Outposts, Amazon EMR comenzó a admitir el conector S3A de Apache Hadoop en la versión 7.0.0. Las versiones anteriores de Amazon EMR no admiten S3 en Outposts localmente y tampoco son compatibles con el sistema de archivos de EMR (EMRFS).

Aplicaciones compatibles

Amazon EMR con Amazon S3 en Outposts admite las siguientes aplicaciones:

  • Hadoop

  • Spark

  • Hue

  • Hive

  • Sqoop

  • Pig

  • Hudi

  • Flink

Para obtener más información, consulte la Guía de publicación de Amazon EMR.

Creación y configuración de un bucket de Amazon S3 en Outposts

Amazon EMR utiliza el AWS SDK for Java con Amazon S3 en Outposts para almacenar datos de entrada y de salida. Los archivos de registro de Amazon EMR se almacenan en la ubicación regional de Amazon S3 que elija pero no se almacenan localmente en Outpost. Para obtener más información, consulte Ver archivos de registro en la Guía de administración de Amazon EMR.

Los buckets de S3 on Outposts aplican ciertas restricciones y limitaciones de nomenclatura para cumplir con los requisitos de Amazon S3 y DNS. Para obtener más información, consulte Creación de un bucket de S3 en Outposts.

Con la versión 7.0.0 y posteriores de Amazon EMR, puede usar Amazon EMR con S3 en Outposts y el sistema de archivos S3A.

Requisitos previos

Permisos de S3 en Outposts: al crear el perfil de instancia de Amazon EMR, su rol debe incluir el espacio de nombres de AWS Identity and Access Management (IAM) para S3 en Outposts. S3 en Outposts tiene su propio espacio de nombres: s3-outposts*. Para ver un ejemplo de política que utiliza este espacio de nombres, consulte Configuración de IAM con S3 en Outposts.

Conector S3A: para configurar el clúster de EMR para que pueda acceder a los datos de un bucket de Amazon S3 en Outposts, debe utilizar el conector S3A de Apache Hadoop. Para usar el conector, asegúrese de que todos sus URI de S3 usen el esquema s3a. Si no es así, puede configurar la implementación del sistema de archivos que utiliza para el clúster de EMR para que sus URI de S3 funcionen con el conector S3A.

Para configurar la implementación del sistema de archivos para que funcione con el conector S3A, utilice las propiedades de configuración fs.file_scheme.impl y fs.AbstractFileSystem.file_scheme.impl del clúster de EMR, donde file_scheme equivale al tipo de URI de S3 que tenga. Para utilizar el ejemplo siguiente, sustituya user input placeholders con su propia información. Por ejemplo, para cambiar la implementación del sistema de archivos para los URI de S3 que utilizan el esquema s3, especifique las siguientes propiedades de configuración del 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 usar S3A, defina la propiedad de configuración fs.file_scheme.impl en org.apache.hadoop.fs.s3a.S3AFileSystem y establezca la propiedad fs.AbstractFileSystem.file_scheme.impl en org.apache.hadoop.fs.s3a.S3A.

Por ejemplo, si accede a la ruta s3a://bucket/..., defina la propiedad fs.s3a.impl en org.apache.hadoop.fs.s3a.S3AFileSystem y establezca la propiedad fs.AbstractFileSystem.s3a.impl en org.apache.hadoop.fs.s3a.S3A.

Introducción al uso de Amazon EMR con Amazon S3 en Outposts

En los temas que siguen se explica cómo empezar a utilizar Amazon EMR con Amazon S3 en Outposts.

Crear una política de permisos

Antes de poder crear un clúster de EMR que utilice Amazon S3 en Outposts, debe crear una política de IAM para adjuntarla al perfil de instancia de Amazon EC2 para el clúster. La política debe tener permisos de acceso al Nombre de recurso de Amazon (ARN) del punto de acceso de S3 en Outposts. Para obtener más información acerca de la creación de políticas de IAM para S3 en Outposts, consulte Configuración de IAM con S3 en Outposts.

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. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name, "Action": [ "s3-outposts:*" ] } ] }

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

Para crear un clúster que ejecute Spark con S3 en Outposts, complete los siguientes pasos en la consola.

Para crear un clúster que ejecute Spark con S3 en Outposts
  1. Abra la consola de Amazon EMR enhttps://console.aws.amazon.com/elasticmapreduce/.

  2. En el panel de navegación izquierdo, elija Clusters (Clústeres).

  3. Elija Create cluster.

  4. Para la versión de Amazon EMR, elija emr-7.0.0 o posterior.

  5. Para el paquete de aplicaciones, elija Interactivo con Spark. Seleccione cualquier otra aplicación que desee incluir en el clúster.

  6. Para habilitar Amazon S3 en Outposts, realice la siguiente configuración.

    Ejemplo de configuración

    Para usar esta configuración de ejemplo, sustituya user input placeholders por su información.

    [ { "Classification": "core-site", "Properties": { "fs.s3a.bucket.DOC-EXAMPLE-BUCKET.accesspoint.arn": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name" "fs.s3a.committer.name": "magic", "fs.s3a.select.enabled": "false" } }, { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-defaults", "Properties": { "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64", "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  7. En la sección Redes, elija una nube privada virtual (VPC) y una subred que estén en su bastidor de AWS Outposts. Para obtener más información sobre Amazon EMR en Outposts, consulte Clústeres de EMR en AWS Outposts en la Guía de administración de Amazon EMR.

  8. En la sección Perfil de instancia de EC2 para Amazon EMR, elija el rol de IAM que tenga adjunta la política de permisos que ha creado anteriormente.

  9. Configure los ajustes de clúster restantes y, a continuación, elija Crear clúster.

Información general sobre las configuraciones

En las siguientes tablas se describen las configuraciones de S3A y Spark, además de los valores que se deben especificar para los parámetros al configurar un clúster que utiliza S3 en Outposts con Amazon EMR.

Configuración de S3A
Parámetro Valor predeterminado Valor obligatorio para S3 en Outposts Explicación

fs.s3a.aws.credentials.provider

Si no se especifica, S3A buscará el bucket de S3 de la región con el nombre del bucket de Outposts.

El ARN del punto de acceso del bucket de S3 en Outposts

Amazon S3 en Outposts admite puntos de acceso únicamente de la virtual private cloud (VPC) como el único medio para acceder a los buckets de Outposts.

fs.s3a.committer.name

file

magic

Magic es el único confirmador compatible con S3 en Outposts.

fs.s3a.select.enabled

TRUE

FALSE

S3 Select no es compatible con Outposts.

JAVA_HOME

/usr/lib/jvm/java-8

/usr/lib/jvm/java-11-amazon-corretto.x86_64

S3 en Outposts en S3A requiere la versión 11 de Java.

Configuración de Spark
Parámetro Valor predeterminado Valor obligatorio para S3 en Outposts Explicación

spark.sql.sources.fastS3PartitionDiscovery.enabled

TRUE

FALSE

S3 en Outposts no admite la partición rápida.

spark.executorEnv.JAVA_HOME

/usr/lib/jvm/java-8

/usr/lib/jvm/java-11-amazon-corretto.x86_64

S3 en Outposts en S3A requiere la versión 11 de Java.

Consideraciones

Tenga en cuenta lo siguiente cuando integre Amazon EMR con los buckets de S3 en Outposts:

  • Amazon S3 en Outposts es compatible con la versión 7.0.0 y posteriores de Amazon EMR.

  • Se requiere el conector S3A para utilizar S3 en Outposts con Amazon EMR. Solo S3A tiene las características necesarias para interactuar con los buckets de S3 en Outposts. Para obtener información sobre la configuración del conector S3A, consulte el apartado Requisitos previos.

  • Amazon S3 en Outposts solo admite el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) con Amazon EMR. Para obtener más información, consulte Cifrado de datos en S3 en Outposts.

  • Amazon S3 en Outposts no admite la escritura con el FileOutputCommitter de S3A. Al escribir con el FileOutputCommitter de S3A en los buckets de S3 en Outposts, se produce el siguiente error: InvalidStorageClass: The storage class you specified is not valid.

  • Amazon S3 en Outposts no es compatible con Amazon EMR sin servidor ni Amazon EMR en EKS.

  • Los registros de Amazon EMR se almacenan en la ubicación regional de Amazon S3 que haya elegido pero no se almacenan localmente en el bucket de S3 en Outposts.