Descargar datos en Amazon S3 - Amazon EMR

Descargar datos en Amazon S3

Para obtener información sobre cómo cargar objetos en Amazon S3, consulte Agregar un objeto a un bucket en la Guía del usuario de Amazon Simple Storage Service. Para más información sobre el uso de Amazon S3 con Hadoop, consulte http://wiki.apache.org/hadoop/AmazonS3.

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

Amazon EMR utiliza AWS SDK for Java con Amazon S3 para almacenar datos de entrada y de salida, y archivos de registro. Amazon S3 denomina estas ubicaciones de almacenamiento buckets. Los buckets tienen ciertas restricciones y limitaciones para cumplir con los requisitos de Amazon S3 y DNS. Para obtener más información, consulte Restricciones y limitaciones de los buckets en la Guía del usuario de Amazon Simple Storage Service.

En esta sección, se muestra cómo utilizar la AWS Management Console de Amazon S3 para crear y después definir permisos para un bucket de Amazon S3. También puede crear y establecer permisos para un bucket de Amazon S3 con la API o la AWS CLI de Amazon S3. También puede utilizar curl junto con una modificación para pasar los parámetros de autenticación correspondientes a Amazon S3.

Consulte los siguientes recursos:

nota

Si habilita el registro para un bucket, se habilitan únicamente los registros de acceso al bucket, no los registros del clúster de Amazon EMR.

Durante la creación de un bucket o posteriormente, puede definir los permisos adecuados para tener acceso a él, en función de su aplicación. Lo habitual es que se conceda a sí mismo (el propietario) acceso de lectura y de escritura, así como acceso de lectura a los usuarios autenticados.

Los buckets de Amazon S3 necesarios deben existir para poder crear un clúster. Debe cargar en Amazon S3 todos los scripts o datos necesarios a los que se hace referencia en el clúster. En la siguiente tabla se describen ubicaciones de ejemplo de datos, scripts y archivos de registro.

Configurar cargas multiparte para Amazon S3

Amazon EMR admite la carga multiparte de Amazon S3 a través del SDK de AWS para Java. La carga multiparte permite cargar un solo objeto como un conjunto de partes. Puede cargar estas partes del objeto de forma independiente y en cualquier orden. Si la transmisión de cualquier parte falla, puede retransmitir esta parte sin que las demás partes se vean afectadas. Después de cargar todas las partes del objeto, Amazon S3 las combina y crea el objeto.

Para obtener más información, consulte la sección Información general sobre la carga multiparte en la Guía de del usuario de Amazon Simple Storage Service.

Además, Amazon EMR ofrece propiedades que le permiten controlar de manera más precisa la limpieza de partes de carga multiparte con errores.

En la siguiente tabla, se describen las propiedades de configuración de Amazon EMR para la carga multiparte. Puede configurarlas utilizando la clasificación de configuración core-site. Para más información, consulte Configurar aplicaciones en la Guía de versiones de Amazon EMR.

Nombre de parámetro de configuración Valor predeterminado Descripción
fs.s3n.multipart.uploads.enabled true Un tipo booleano que indica si se debe habilitar las cargas multiparte. Cuando la vista consistente de EMRFS se ha habilitado, las cargas multiparte se habilitan de forma predeterminada y si se configura este valor en false, no se tiene en cuenta.
fs.s3n.multipart.uploads.split.size 134217728

Especifica el tamaño máximo de una parte, en bytes, para que EMRFS inicie la carga de una parte nueva cuando las cargas multiparte están habilitadas. El valor mínimo es 5242880 (5 MB). Si se especifica un valor menor, se utiliza 5242880. El valor máximo es 5368709120 (5 GB). Si se especifica un valor mayor, se utiliza 5368709120.

Si se ha desactivado el cifrado del cliente de EMRFS y el confirmador optimizado de Amazon S3 también se ha desactivado, este valor también controla el tamaño máximo que puede alcanzar un archivo de datos para que EMRFS utilice cargas multiparte en lugar de una solicitud PutObject para cargar el archivo. Para obtener más información, consulte

fs.s3n.ssl.enabled true Un tipo booleano que indica si se debe utilizar http o https.
fs.s3.buckets.create.enabled false Un tipo booleano que indica si se debe crear un bucket en caso de que no exista. Si se establece en false, se provocará una excepción en las operaciones CreateBucket.
fs.s3.multipart.clean.enabled false Un tipo booleano que indica si se debe habilitar la limpieza periódica en segundo plano de las cargas multiparte incompletas.
fs.s3.multipart.clean.age.threshold 604800 Un tipo long que especifica la edad mínima de una carga multiparte, en segundos, antes de que se la incluya en la limpieza. El valor predeterminado es una semana.
fs.s3.multipart.clean.jitter.max 10000 Un tipo entero que especifica la cantidad máxima de retraso de fluctuación aleatorio, en segundos, que se agrega al retraso fijo de 15 minutos antes de programar la próxima ronda de limpieza.

Desactivar cargas multiparte

nota

Hemos rediseñado la consola de Amazon EMR para que sea más fácil de utilizar. Consulte Novedades de la consola para obtener información sobre las diferencias entre la consola antigua y la nueva.

New console
Para deshabilitar las cargas multiparte con la nueva consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EMR en https://console.aws.amazon.com/emr.

  2. En EMR en EC2 situado en el panel de navegación izquierdo, elija Clústeres y, a continuación, elija Crear clúster.

  3. En Configuración de software, introduzca la configuración siguiente: classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false].

  4. Elija cualquier otra opción que se aplique a su clúster.

  5. Para lanzar el clúster, elija Crear clúster.

Old console
Para deshabilitar las cargas multiparte con la consola antigua
  1. Vaya hasta la nueva consola de Amazon EMR y seleccione Ir a la consola antigua en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte Uso de la consola antigua.

  2. Elija Crear clúster e Ir a las opciones avanzadas.

  3. En Editar configuración de software, introduzca la configuración siguiente: classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]

  4. Continúe con la creación del clúster.

CLI
Para deshabilitar la carga multiparte mediante la AWS CLI

Este procedimiento explica cómo deshabilitar la carga multiparte utilizando la AWS CLI. Para deshabilitar la carga multiparte, escriba el comando create-cluster con el parámetro --bootstrap-actions.

  1. Cree un archivo myConfig.json con el siguiente contenido y guárdelo en el mismo directorio en el que va a ejecutar el comando:

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. Escriba el comando siguiente y sustituya myKey por el nombre del par de claves de EC2.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws emr create-cluster --name "Test cluster" \ --release-label emr-5.36.1 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json
CLI
Para desactivar la carga multiparte mediante la API

Prácticas recomendadas

A continuación se indican las recomendaciones para utilizar buckets de Amazon S3 con clústeres de EMR.

Habilitación del control de versiones

El control de versiones es una configuración recomendada para su bucket de Amazon S3. Al habilitar el control de versiones, se asegura de que incluso si se eliminan o se sobrescriben involuntariamente los datos, se puedan recuperar. Para más información, consulte Uso del control de versiones en la Guía del usuario de Amazon Simple Storage Service.

Limpiar las cargas multiparte con errores

Los componentes del clúster de EMR utilizan cargas multiparte a través del SDK de AWS para Java con las API de Amazon S3 para escribir los archivos de registro y los datos de salida en Amazon S3 de forma predeterminada. Para más información sobre cómo utilizar Amazon EMR para cambiar las propiedades relacionadas con esta configuración, consulte Configurar cargas multiparte para Amazon S3. En ocasiones, la carga de un archivo de gran tamaño puede dar lugar a una carga multiparte de Amazon S3 incompleta. Cuando una carga multiparte no se puede completar de forma satisfactoria, la carga multiparte en curso sigue ocupando su bucket e incurre en costos de almacenamiento. Le recomendamos las siguientes opciones para evitar un almacenamiento de archivos excesivo:

  • En el caso de los buckets que utilice con Amazon EMR, utilice una regla de configuración del ciclo de vida en Amazon S3 que elimine las cargas multiparte incompletas tres días después de la fecha de inicio de la carga. Las reglas de configuración del ciclo de vida le permiten controlar la clase de almacenamiento y el ciclo de vida de los objetos. Para más información, consulte Administración del ciclo de vida de los objetos y Anulación de cargas multiparte incompletas con la política de ciclo de vida de buckets.

  • Habilite la característica de limpieza de cargas multiparte de Amazon EMR estableciendo fs.s3.multipart.clean.enabled en TRUE y ajustando otros parámetros de limpieza. Esta característica es útil con volúmenes altos y a gran escala, así como con clústeres que tienen un tiempo de actividad limitado. En este caso, el parámetro DaysAfterIntitiation de una regla de configuración de ciclo de vida puede ser demasiado largo, incluso si se establece en su valor mínimo, provocando picos en el almacenamiento de Amazon S3. La limpieza multiparte de Amazon EMR permite un control más preciso. Para obtener más información, consulte Configurar cargas multiparte para Amazon S3.

Administrar los marcadores de versiones

Se recomienda habilitar una regla de configuración de ciclo de vida en Amazon S3 para eliminar los marcadores de eliminación de objetos vencidos de los buckets con control de versiones que utilice con Amazon EMR. Al eliminar un objeto de un bucket con control de versiones, se crea un marcador de eliminación. Si todas las versiones anteriores del objeto caducan posteriormente, queda un marcador de eliminación de objeto caducado en el bucket. Aunque no se aplican cargos por los marcadores de eliminación, si borra los marcadores caducados puede mejorar el rendimiento de las solicitudes de LIST. Para más información, consulte Configuración del ciclo de vida de un bucket con el control de versiones en la Guía del usuario de Amazon Simple Storage Service.

Prácticas recomendadas de rendimiento

En función de las cargas de trabajo, los tipos específicos de uso de clústeres de EMR y las aplicaciones en dichos clústeres pueden dar lugar a un número elevado de solicitudes en su bucket. Para más información, consulte Consideraciones sobre la tasa de solicitudes y el rendimiento en la Guía del usuario de Amazon Simple Storage Service.