Cree acciones de arranque para instalar software adicional con un clúster de Amazon EMR - 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.

Cree acciones de arranque para instalar software adicional con un clúster de Amazon EMR

Puede utilizar una acción de arranque para instalar software adicional o personalizar la configuración de las instancias de clúster. Las acciones de Bootstrap son scripts que se ejecutan en el clúster después de que Amazon EMR lance la instancia mediante Amazon Machine Image (AMI) de Amazon Linux. Las acciones de Bootstrap se ejecutan antes de que Amazon EMR instale las aplicaciones que especificó al crear el clúster y antes de que los nodos del clúster comiencen a procesar los datos. Si añade nodos a un clúster en ejecución, las acciones de arranque también se ejecutan en esos nodos de la misma manera. Puede crear acciones de arranque personalizadas y especificarlas al crear el clúster.

La mayoría de las acciones de arranque predefinidas para EMR AMI las versiones 2.x y 3.x de Amazon no son compatibles con las versiones 4.x de AmazonEMR. Por ejemplo, configure-Hadoop y no configure-daemons son compatibles con la EMR versión 4.x de Amazon. En cambio, la EMR versión 4.x de Amazon proporciona esta funcionalidad de forma nativa. Para obtener más información sobre cómo migrar las acciones de arranque de las EMR AMI versiones 2.x y 3.x de Amazon a la EMR versión 4.x de Amazon, consulte Personalización de la configuración de clústeres y aplicaciones con versiones anteriores AMI de Amazon en EMR la Guía de versiones de Amazon. EMR

Conceptos básicos de las acciones de arranque

Las acciones de arranque se ejecutan como usuario de Hadoop de forma predeterminada. Puede ejecutar una acción de arranque con privilegios raíz utilizando sudo.

Todas las interfaces EMR de administración de Amazon admiten acciones de arranque. Puede especificar hasta 16 acciones de arranque por clúster proporcionando varios bootstrap-actions parámetros desde la consola AWS CLI, o API

Desde la EMR consola de Amazon, si lo desea, puede especificar una acción de arranque al crear un clúster.

Cuando usas elCLI, puedes pasar referencias a los scripts de acción de bootstrap a Amazon EMR añadiendo el --bootstrap-actions parámetro al crear el clúster mediante el create-cluster comando.

--bootstrap-actions Path="s3://amzn-s3-demo-bucket/filename",Args=[arg1,arg2]

Si la acción de arranque devuelve un código de error distinto de cero, Amazon EMR lo considera un error y finaliza la instancia. Si demasiadas instancias fallan en sus acciones de arranque, Amazon EMR termina el clúster. Si solo fallan algunas instancias, Amazon EMR intenta reasignar las instancias fallidas y continuar. Utilice el código de error lastStateChangeReason del clúster para identificar los errores provocados por una acción de arranque.

Ejecución condicional de una acción de arranque

Para ejecutar solo una acción de arranque en el nodo maestro, puede usar una acción de arranque personalizada con un poco de lógica para determinar si el nodo es maestro.

#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below

El siguiente resultado se imprimirá desde un nodo principal.

This is not master node, do nothing, exiting

El siguiente resultado se imprimirá desde el nodo maestro.

This is master, continuing to execute script

Para utilizar esta lógica, cargue su acción de arranque, incluido el código anterior, en su bucket de Amazon S3. En el AWS CLI, añada el --bootstrap-actions parámetro a la aws emr create-cluster API llamada y especifique la ubicación del script de arranque como el valor de. Path

Acciones de apagado

Una script de acción de arranque puede crear una o más acciones de apagado escribiendo scripts en el directorio /mnt/var/lib/instance-controller/public/shutdown-actions/. Cuando un clúster se termina, todos los scripts en este directorio se ejecutan en paralelo. Cada script se debe ejecutar y completar en un plazo de 60 segundos.

No se garantiza la ejecución de los scripts de acción de apagado si el nodo termina con un error.

nota

Si utiliza EMR las versiones 4.0 y posteriores de Amazon, debe crear manualmente el /mnt/var/lib/instance-controller/public/shutdown-actions/ directorio en el nodo principal. No existe de forma predeterminada; sin embargo, después de crearlos, los scripts en este directorio se ejecutan a pesar de todo antes del apagado. Para obtener más información acerca de la conexión al nodo principal para crear directorios, consulte Conéctese al nodo principal EMR del clúster de Amazon mediante SSH.

Usar acciones de arranque personalizadas

Puede crear un script personalizado para realizar una acción de arranque personalizada. Cualquiera de las EMR interfaces de Amazon puede hacer referencia a una acción de arranque personalizada.

nota

Para obtener el mejor rendimiento, le recomendamos que almacene las acciones de arranque personalizadas, los scripts y otros archivos que desee utilizar con Amazon EMR en un bucket de Amazon S3 que se encuentre en el Región de AWS mismo lugar que su clúster.

Agregar acciones de arranque personalizadas

Console
Para crear un clúster con una acción de arranque con la consola
  1. Inicia sesión en y abre la AWS Management Console EMR consola de Amazon en https://console.aws.amazon.com/emr.

  2. EMREC2En el panel de navegación de la izquierda, selecciona Clústeres y, a continuación, selecciona Crear clúster.

  3. En Acciones de arranque, elija Agregar para especificar un nombre, una ubicación del script y argumentos opcionales para la acción. Seleccione Agregar acción de arranque.

  4. Opcionalmente, agregue más acciones de arranque.

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

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

CLI
Para crear un clúster con una acción de arranque personalizada con la AWS CLI

Cuando utilice AWS CLI para incluir una acción de arranque, especifique la Path y Args como una lista separada por comas. El siguiente ejemplo no utiliza una lista de argumentos.

  • Para lanzar un clúster con una acción de arranque personalizada, escriba el siguiente comando, sustituyendo myKey con el nombre de su EC2 key pair. Incluya --bootstrap-actions como parámetro y especifique la ubicación del script de arranque como valor de Path.

    • Usuarios UNIX de Linux y Mac OS X:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    • Usuarios de Windows:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"

    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.

    nota

    Si no has creado previamente el rol de EMR servicio de Amazon y el perfil de EC2 instancia predeterminados, escribe aws emr create-default-roles para crearlos antes de escribir el create-cluster subcomando.

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

Usar una acción de arranque personalizada para copiar un objeto de Amazon S3 en cada nodo

Puede utilizar una acción de arranque para copiar objetos desde Amazon S3 en cada nodo de un clúster antes de que se instalen las aplicaciones. AWS CLI Se instala en cada nodo de un clúster, por lo que la acción de bootstrap puede invocar AWS CLI comandos.

En el siguiente ejemplo, se muestra un script sencillo de acción de arranque que copia el archivo myfile.jar desde Amazon S3 en la carpeta local /mnt1/myfolder de cada nodo del clúster. El script se guarda en Amazon S3 con el nombre de archivo copymyfile.sh y contiene lo siguiente.

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder

Al lanzar el clúster, debe especificar el script. El siguiente AWS CLI ejemplo lo demuestra:

aws emr create-cluster --name "Test cluster" --release-label emr-7.3.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"