

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.

# Configure las aplicaciones al lanzar su clúster de Amazon EMR
<a name="emr-plan-software"></a>

Cuando selecciona una versión de software, Amazon EMR utiliza una imagen de máquina de Amazon (AMI) con Amazon Linux para instalar el software que usted elija al lanzar un clúster, como Hadoop, Spark y Hive. Amazon EMR ofrece nuevas versiones de forma periódica, agregando nuevas características y aplicaciones, además de actualizaciones generales. Le recomendamos que utilice la última versión para lanzar el clúster siempre que sea posible. La última versión es la opción predeterminada al lanzar un clúster desde la consola. 

Para más información sobre las versiones de Amazon EMR y las versiones de software disponibles en cada lanzamiento, consulte la [Guía de versiones de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). Para más información sobre cómo editar las configuraciones predeterminadas de aplicaciones y software instalados en su clúster, consulte [Configuración de aplicaciones](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html) en la Guía de versiones de Amazon EMR. Algunas versiones de los componentes del ecosistema de Hadoop y Spark de código abierto que se incluyen en las versiones de Amazon EMR tienen parches y mejoras, que se documentan en la [Guía de versiones de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/).

 Además del software y las aplicaciones estándar que están disponibles para su instalación en su clúster, puede utilizar acciones de arranque para instalar software personalizado. Las acciones de arranque son scripts que se ejecutan en las instancias cuando se lanza el clúster y que se ejecutan en nuevos nodos que se añaden a su clúster cuando se crean. Las acciones de Bootstrap también son útiles para invocar AWS CLI comandos en cada nodo para copiar objetos de Amazon S3 a cada nodo del clúster. 

**nota**  
 Las acciones de arranque se utilizan de forma distinta en Amazon EMR versión 4.x y posteriores. Para más información sobre estas diferencias respecto a las versiones 2.x y 3.x de la AMI de Amazon EMR, consulte [Diferencias introducidas en la versión 4.x](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-differences.html) en la Guía de versiones de Amazon EMR. 

# Creación de acciones de arranque para instalar software adicional con un clúster de Amazon EMR
<a name="emr-plan-bootstrap"></a>

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 arranque son scripts que se ejecutan en el clúster después de que Amazon EMR lanza la instancia mediante la imagen de máquina de Amazon (AMI) de Amazon Linux. Las acciones de arranque se ejecutan antes de que Amazon EMR instale las aplicaciones que se especifican 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 las versiones 2.x y 3.x de la AMI de Amazon EMR no se admiten en sus versiones 4.x. Por ejemplo, `configure-Hadoop` y `configure-daemons` no se admiten en la versión 4.x de Amazon EMR. En su lugar, Amazon EMR versión 4.x proporciona esta funcionalidad de forma nativa. Para más información sobre cómo migrar las acciones de arranque de las versiones 2.x y 3.x de la AMI de Amazon EMR a la versión 4.x de Amazon EMR, consulte [Personalización de la configuración de clústeres y aplicaciones con versiones anteriores de la AMI de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-3x-customizeappconfig.html) en la Guía de versiones de Amazon EMR.

## Conceptos básicos de las acciones de arranque
<a name="bootstrapUses"></a>

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 de administración de Amazon EMR admiten acciones de arranque. Puede especificar hasta 16 acciones de arranque por clúster proporcionando varios `bootstrap-actions` parámetros desde la consola o la API AWS CLI. 

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

Cuando utilice la CLI, puede pasar referencias a scripts de acciones de arranque a Amazon EMR si agrega el parámetro `--bootstrap-actions` al crear el clúster mediante el comando `create-cluster`.

```
--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 trata como un error y termina la instancia. Si hay demasiadas instancias que generen error en sus acciones de arranque, entonces Amazon EMR termina el clúster. Si solo unas pocas instancias generan error, Amazon EMR intenta reasignar las instancias erróneas 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
<a name="emr-bootstrap-runif"></a>

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 AWS CLI, añada el `--bootstrap-actions` parámetro a la llamada a la `aws emr create-cluster` API y especifique la ubicación del script de arranque como el valor de. `Path` 

## Acciones de apagado
<a name="bootstrap_Shutown"></a>

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**  
Cuando se utiliza la versión 4.0 y posteriores de Amazon EMR, debe crear manualmente el directorio `/mnt/var/lib/instance-controller/public/shutdown-actions/` en el nodo maestro. 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 [Conexión al nodo principal del clúster de Amazon EMR mediante SSH](emr-connect-master-node-ssh.md).

## Usar acciones de arranque personalizadas
<a name="bootstrapCustom"></a>

Puede crear un script personalizado para realizar una acción de arranque personalizada. Cualquiera de las interfaces de Amazon EMR 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.

**Topics**
+ [Agregar acciones de arranque personalizadas](#custom-bootstrap)
+ [Usar una acción de arranque personalizada para copiar un objeto de Amazon S3 en cada nodo](#CustomBootstrapCopyS3Object)

### Agregar acciones de arranque personalizadas
<a name="custom-bootstrap"></a>

------
#### [ Console ]

**Para crear un clúster con una acción de arranque mediante la consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

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

1. 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**.

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

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

1. Para lanzar el clúster, elija **Crear clúster**.

------
#### [ CLI ]

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

Cuando utilice la 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 y *myKey* sustitúyalo por el nombre del key pair de EC2. Incluya `--bootstrap-actions` como parámetro y especifique la ubicación del script de arranque como valor de `Path`.
  + Usuarios de Linux, UNIX y Mac OS X:

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

    ```
    1. 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 ha creado con anterioridad el rol de servicio de Amazon EMR predeterminado y el perfil de instancia de EC2, escriba `aws emr create-default-roles` para crearlos antes de escribir el subcomando `create-cluster`.

  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](https://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
<a name="CustomBootstrapCopyS3Object"></a>

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.12.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"
```