Importar archivos con caché distribuida - 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.

Importar archivos con caché distribuida

DistributedCache es una característica de Hadoop que puede aumentar la eficacia cuando una tarea de asignación o de reducción necesita acceder a datos comunes. Si el clúster depende de aplicaciones existentes o binarias que no se instalaron al crear el clúster, puede utilizar DistributedCache para importar estos archivos. Esta característica permite a un nodo de clúster leer los archivos importados desde su sistema de archivos local, en lugar de recuperar los archivos desde otros nodos del clúster.

Para obtener más información, vaya a http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/ DistributedCache .html.

Invoca DistributedCache al crear el clúster. Los archivos se almacenan en caché justo antes de empezar el trabajo de Hadoop y los archivos permanecen almacenados en la memoria caché durante el tiempo que dura el trabajo. Puede almacenar en caché los archivos almacenados en cualquier sistema de archivos compatible con Hadoop, por ejemplo, HDFS o Amazon S3. El tamaño predeterminado de la caché de archivos es de 10 GB. Para cambiar el tamaño de la caché, vuelva a configurar el parámetro de Hadoop, local.cache.size a través de la acción de arranque. Para obtener más información, consulte Crear acciones de arranque para instalar software adicional.

Tipos de archivo admitidos

DistributedCache permite importar tanto archivos individuales como conjuntos de archivos. Los archivos individuales se almacenan en caché como de solo lectura. Los archivos ejecutables y binarios tienen establecidos permisos de ejecución.

Los conjuntos de archivos son uno o más archivos empaquetados mediante una utilidad, como gzip. DistributedCache transfiere los archivos comprimidos a cada nodo central y descomprime el conjunto de archivos como parte del proceso de almacenamiento en caché. DistributedCache es compatible con los siguientes formatos de compresión:

  • zip

  • tgz

  • tar.gz

  • tar

  • jar

Ubicación de los archivos en caché

DistributedCache solo copia los archivos en los nodos centrales. Si no hay nodos centrales en el clúster, DistributedCache copia los archivos en el nodo principal.

DistributedCache asocia los archivos en caché al directorio de trabajo actual del asignador y reductor mediante enlaces simbólicos. Un symlink es un alias a una ubicación de archivo, no la ubicación de archivo real. El valor del parámetro, yarn.nodemanager.local-dirs en yarn-site.xml, especifica la ubicación de los archivos temporales. Amazon EMR establece este parámetro en /mnt/mapred o alguna variación basada en el tipo de instancia y la versión de EMR. Por ejemplo, una configuración podría tener /mnt/mapred y /mnt1/mapred dado que el tipo de instancia tiene dos volúmenes efímeros. Los archivos de caché se encuentran en un subdirectorio de la ubicación de archivos temporales en /mnt/mapred/taskTracker/archive.

Si almacena un solo archivo en caché, DistributedCache colocará el archivo en el directorio archive. Si almacena un conjunto de archivos en caché, DistributedCache lo descomprime y crea un subdirectorio en /archive con el mismo nombre que el del conjunto de archivos. Los archivos individuales se encuentran en el nuevo subdirectorio.

Puede utilizar DistributedCache solo cuando se utilice una transmisión.

Acceso a archivos almacenados en caché desde aplicaciones de streaming

Para acceder a los archivos almacenados en la memoria caché de sus aplicaciones de mapeador o reductor, asegúrese de añadir el directorio de trabajo actual (./) en la ruta de la aplicación y hacer referencia a los archivos en caché aunque estén presentes en el directorio de trabajo actual.

Acceso a archivos almacenados en caché desde aplicaciones de streaming

Puede usar el AWS Management Console y el AWS CLI para crear clústeres que usen caché distribuida.

nota

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

New console
Para especificar los archivos de caché distribuida utilizando la nueva consola
  1. Inicie sesión en la AWS Management Console consola Amazon EMR y ábrala 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 Pasos, seleccione Agregar paso. Se abrirá el cuadro de diálogo Agregar paso. En el campo Argumentos, incluya los archivos y conjuntos de archivos que desea guardar en la memoria caché. El tamaño del archivo (o tamaño total de los archivos en un archivo de almacenamiento) debe ser menor que el tamaño de la memoria caché asignado.

    Si desea agregar un archivo individual en la caché distribuida, especifique -cacheFile seguido del nombre y ubicación del archivo, el símbolo numeral (#) y el nombre que desee asignarle al archivo cuando se coloque en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo individual a la caché distribuida.

    -cacheFile \ s3://DOC-EXAMPLE-BUCKET/file-name#cache-file-name

    Si desea agregar un conjunto de archivos en la caché distribuida, introduzca -cacheArchive seguido de la ubicación de los archivos en Amazon S3, el símbolo numeral (#) y a continuación el nombre que desee asignarle a la colección de archivos en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo de almacenamiento a la caché distribuida.

    -cacheArchive \ s3://DOC-EXAMPLE-BUCKET/archive-name#cache-archive-name

    Ingrese los valores adecuados en el resto de los campos del cuadro de diálogo. Las opciones varían según el tipo de paso. Para agregar el paso y salir del cuadro de diálogo, elija Agregar paso.

  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 especificar archivos de caché distribuida utilizando 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 Create cluster.

  3. Elija Step execution (Ejecución de pasos) como modo de lanzamiento.

  4. En la sección Steps (Pasos), en el campo Add step (Añadir paso), elija Streaming program (Programa de streaming) en la lista y haga clic en Configure and add (Configurar y añadir).

  5. En el campo Argumentos, incluya los archivos y conjuntos de archivos que desea guardar en la caché y haga clic en Agregar. El tamaño del archivo (o tamaño total de los archivos en un archivo de almacenamiento) debe ser menor que el tamaño de la memoria caché asignado.

    Si desea agregar un archivo individual en la caché distribuida, especifique -cacheFile seguido del nombre y ubicación del archivo, el símbolo numeral (#) y el nombre que desee asignarle al archivo cuando se coloque en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo individual a la caché distribuida.

    -cacheFile \ s3://DOC-EXAMPLE-BUCKET/file_name#cache_file_name

    Si desea agregar un conjunto de archivos en la caché distribuida, introduzca -cacheArchive seguido de la ubicación de los archivos en Amazon S3, el símbolo numeral (#) y a continuación el nombre que desee asignarle a la colección de archivos en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo de almacenamiento a la caché distribuida.

    -cacheArchive \ s3://DOC-EXAMPLE-BUCKET/archive_name#cache_archive_name
  6. Continúe con la configuración y el lanzamiento del clúster. El clúster copia los archivos en la ubicación de caché antes de procesar ningún paso de clúster.

CLI
Para especificar los archivos de caché distribuidos con AWS CLI
  • Para enviar un paso de streaming cuando se crea un clúster, escriba el comando create-cluster con el parámetro --steps. Para especificar los archivos de caché distribuidos mediante el AWS CLI, especifique los argumentos adecuados al enviar un paso de transmisión.

    Si desea agregar un archivo individual en la caché distribuida, especifique -cacheFile seguido del nombre y ubicación del archivo, el símbolo numeral (#) y el nombre que desee asignarle al archivo cuando se coloque en la caché local.

    Si desea agregar un conjunto de archivos en la caché distribuida, introduzca -cacheArchive seguido de la ubicación de los archivos en Amazon S3, el símbolo numeral (#) y a continuación el nombre que desee asignarle a la colección de archivos en la caché local. En el ejemplo siguiente se muestra cómo agregar un archivo de almacenamiento a la caché distribuida.

    Para obtener más información sobre el uso de los comandos de Amazon EMR en AWS CLI, consulte. https://docs.aws.amazon.com/cli/latest/reference/emr

ejemplo 1

Escriba el siguiente comando para lanzar un clúster y enviar un paso de streaming que utiliza -cacheFile para añadir un archivo sample_dataset_cached.dat, a la caché.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheFile","s3://my_bucket/sample_dataset.dat#sample_dataset_cached.dat"]

Cuando especifica el recuento de instancias sin utilizar el parámetro --instance-groups, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.

Si no ha creado con anterioridad el rol de servicio de EMR predeterminado y el perfil de instancia de EC2, escriba aws emr create-default-roles para crearlos antes de escribir el subcomando create-cluster.

ejemplo 2

El siguiente comando muestra la creación de un clúster de streaming y utiliza -cacheArchive para añadir un archivo de almacenamiento de archivos a la caché.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheArchive","s3://my_bucket/sample_dataset.tgz#sample_dataset_cached"]

Cuando especifica el recuento de instancias sin utilizar el parámetro --instance-groups, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.

Si no ha creado con anterioridad el rol de servicio de EMR predeterminado y el perfil de instancia de EC2, escriba aws emr create-default-roles para crearlos antes de escribir el subcomando create-cluster.