Trabajo con almacenamiento y sistemas de archivos con Amazon EMR - Amazon EMR

Trabajo con almacenamiento y sistemas de archivos con Amazon EMR

Amazon EMR y Hadoop proporcionan una variedad de sistemas de archivos que puede utilizar al momento de procesar pasos de clústeres. Puede especificar qué sistema de archivos utilizar mediante el prefijo del URI utilizado para acceder a los datos. Por ejemplo, s3://amzn-s3-demo-bucket1/path hace referencia a un bucket de Amazon S3 mediante EMRFS. En la siguiente tabla se muestran los sistemas de archivos disponibles, con recomendaciones sobre la hora que es mejor utilizar cada una de ellas.

Amazon EMR y Hadoop suelen utilizar dos o más de los siguientes sistemas de archivos al procesar un clúster. HDFS y EMRFS son los dos sistemas de archivos principales que se utilizan con Amazon EMR.

importante

A partir de la versión 5.22.0 de Amazon EMR, este servicio utiliza AWS Signature Version 4 exclusivamente para autenticar las solicitudes a Amazon S3. Las versiones anteriores de Amazon EMR utilizan AWS Signature Version 2 en algunos casos, a menos que las notas de la versión indiquen que se utiliza exclusivamente Signature Version 4. Para más información, consulte Autenticación de solicitudes (AWS Signature Version 4) y Autenticación de solicitudes (AWS Signature Version 2) en la Guía para desarrolladores de Amazon Simple Storage Service.

Sistema de archivos Prefix Descripción
HDFS hdfs:// (o sin prefijo)

HDFS es un sistema de archivos distribuido, escalable y portátil para Hadoop. Una ventaja de HDFS es el reconocimiento de datos entre los nodos de clúster de Hadoop que administran los clústeres y los nodos de clúster de Hadoop que administran los pasos individuales. Para obtener más información, consulte la documentación de Hadoop.

Los nodos principales y los nodos secundarios utilizan HDFS. Una ventaja es que es rápido; una desventaja es que se trata de almacenamiento efímero que se reclama cuando el clúster finaliza. Es mejor utilizarlo para almacenar en caché los resultados producidos por pasos de flujos de trabajo intermedios.

EMRFS s3://

EMRFS es una implementación del sistema de archivos Hadoop utilizada para lectura y escritura de archivos desde Amazon EMR directamente en Amazon S3. EMRFS ofrece la comodidad de almacenar los datos persistentes en Amazon S3 para su uso con Hadoop además de ofrecer características como el cifrado del lado del servidor de Amazon S3, la consistencia de lectura tras escritura y la consistencia de lista.

nota

Anteriormente, Amazon EMR utilizaba los sistemas de archivos s3n y s3a. Aunque estos todavía funcionan, se recomienda utilizar el esquema de URI de s3 para un mejor rendimiento, seguridad y fiabilidad.

sistema de archivos local

El sistema de archivos local se refiere a un disco conectado a nivel local. Cuando se crea un clúster de Hadoop, cada nodo se crea a partir de una instancia EC2 que viene con un bloque preconfigurado de almacenamiento en disco preasociado que se denomina almacén de instancias. Los datos en volúmenes del almacén de instancias se conservan solo durante la vida de su instancia EC2. Los volúmenes de almacén de instancias son ideales para el almacenamiento temporal de datos que cambian constantemente, como los búferes, las cachés, los datos de pruebas y otro contenido temporal. Para más información, consulte Almacenamiento de instancias de Amazon EC2.

HDFS utiliza el sistema de archivos local, pero Python también se ejecuta desde el sistema de archivos local y puede optar por almacenar archivos de aplicaciones adicionales en volúmenes de almacenes de instancias.

Sistema de archivos de bloques de Amazon S3 (heredado) s3bfs://

El sistema de archivos de bloque de Amazon S3 es un sistema de almacenamiento de archivos heredado. Recomendamos encarecidamente evitar el uso de este sistema.

importante

Le recomendamos que no use este sistema de archivos, ya que puede activar una condición de carrera que podrían provocar un error del clúster. Sin embargo, es posible que aplicaciones heredadas lo requieran.

Acceso a sistemas de archivo

Puede especificar qué sistema de archivos utilizar mediante el prefijo del identificador de recursos uniforme (URI) utilizado para acceder a los datos. Los siguientes procedimientos ilustran cómo hacer referencia a diferentes tipos de sistemas de archivos.

Para acceder a una HDFS local
  • Especifique el prefijo hdfs:/// en el URI. Amazon EMR resuelve rutas que no especifican un prefijo en el URI al HDFS local. Por ejemplo, los dos siguientes URI resolverían la misma ubicación en HDFS.

    hdfs:///path-to-data /path-to-data
Para acceder a una HDFS remota
  • Incluya la dirección IP del nodo principal en el URI, tal y como se muestra en los siguientes ejemplos.

    hdfs://master-ip-address/path-to-data master-ip-address/path-to-data
Para acceder a Amazon S3
  • Utilice el prefijo s3://.

    s3://bucket-name/path-to-file-in-bucket
Para acceder al sistema de archivos de bloques de Amazon S3
  • Se utiliza únicamente por las aplicaciones heredadas que requieren el sistema de archivos de bloques de Amazon S3. Para acceder a datos o almacenar datos con este sistema de archivos, utilice el prefijo s3bfs:// en el URI.

    El sistema de archivos de bloques de Amazon S3 es un sistema de archivos heredado que se utilizaba para soportar cargas de más de 5 GB en Amazon S3. Con la funcionalidad de carga multiparte que Amazon EMR proporciona a través del SDK de AWS para Java, puede cargar archivos de hasta 5 TB en el sistema de archivos nativo de Amazon S3 y el sistema de archivos de bloques de Amazon S3 está obsoleto.

    aviso

    Dado que este sistema de archivos heredado puede crear condiciones de carrera que podrían provocar daños en el sistema de archivos, debe evitar este formato y usar EMRFS en su lugar.

    s3bfs://bucket-name/path-to-file-in-bucket