

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.

# Ejecución de comandos y scripts en un clúster de Amazon EMR
<a name="emr-commandrunner"></a>

En este tema se explica cómo ejecutar un comando o un script como paso en el clúster. Ejecutar un comando o un script como paso es una de las muchas maneras de [enviar el trabajo a un clúster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) y es útil en las siguientes situaciones:
+ Cuando no tiene acceso SSH a su clúster de Amazon EMR
+ Cuando desea ejecutar un comando bash o de intérprete de comandos para solucionar los problemas de su clúster

Puede ejecutar un script tanto al crear un clúster como si el clúster está en estado `WAITING`. Para ejecutar un script antes de que comience el procesamiento de un paso, utilice una acción de arranque en su lugar. Para obtener más información acerca de las acciones de arranque, consulte [Creación de acciones de arranque para instalar software adicional](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html) en la *Guía de administración de Amazon EMR*.

Amazon EMR proporciona las siguientes herramientas para ayudarle a ejecutar scripts, comandos y otros programas en el clúster. Puede invocar ambas herramientas mediante la consola de administración de Amazon EMR o la AWS CLI.

`command-runner.jar`  
Se encuentra en la AMI de Amazon EMR de su clúster. Puede utilizar `command-runner.jar` para ejecutar comandos en su clúster. Especifica `command-runner.jar` sin utilizar su ruta completa. 

`script-runner.jar`  
Se aloja en Amazon S3 en `s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar`, donde `<region>` se encuentra la región en la que reside su clúster de Amazon EMR. Puede usar `script-runner.jar` para ejecutar scripts guardados localmente o en Amazon S3 en su clúster. Debe especificar el URI completo de `script-runner.jar` al enviar un paso.

## Envío de un paso JAR personalizado para ejecutar un script o un comando
<a name="emr-commandrunner-examples"></a>

Los siguientes AWS CLI ejemplos ilustran algunos casos de uso comunes de `command-runner.jar` y `script-runner.jar` en Amazon EMR.

**Example : ejecutar un comando en un clúster mediante `command-runner.jar`**  
Cuando usa `command-runner.jar`, especifica comandos, opciones y valores en la lista de argumentos del paso.  
El siguiente AWS CLI ejemplo envía un paso a un clúster en ejecución que lo invoca. `command-runner.jar` El comando especificado en la `Args` lista descarga un script llamado *my-script.sh* desde Amazon S3 al directorio principal del usuario de hadoop. A continuación, el comando modifica los permisos del script y se ejecuta. *my-script.sh*  
Al usar el AWS CLI, los elementos de la `Args` lista deben estar separados por comas, sin espacios en blanco entre los elementos de la lista. Por ejemplo, `Args=[example-command,example-option,"example option value"]` en lugar de `Args=[example-command, example-option, "example option value"]`.  

```
aws emr add-steps \
--cluster-id j-2AXXXXXXGAPLF \
--steps Type=CUSTOM_JAR,Name="Download a script from S3 change its permissions and run it",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[bash,-c,"aws s3 cp s3://amzn-s3-demo-bucket/my-script.sh /home/hadoop; chmod u+x /home/hadoop/my-script.sh; cd /home/hadoop; ./my-script.sh"]
```

**Example : Ejecutar un script en un clúster mediante `script-runner.jar`**  
Cuando usa `script-runner.jar`, especifica el script que desea ejecutar en la lista de argumentos de su paso.  
En el siguiente AWS CLI ejemplo, se envía un paso a un clúster en ejecución que lo invoca. `script-runner.jar` En este caso, el script llamado *my-script.sh* se almacena en Amazon S3. También puede especificar los scripts locales que se almacenan en el nodo maestro del clúster.  

```
aws emr add-steps \
--cluster-id j-2AXXXXXXGAPLF \
--steps Type=CUSTOM_JAR,Name="Run a script from S3 with script-runner.jar",ActionOnFailure=CONTINUE,Jar=s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://amzn-s3-demo-bucket/my-script.sh]
```

## Otras formas de usar `command-runner.jar`
<a name="emr-commandrunner-other-uses"></a>

También se puede utilizar `command-runner.jar` para enviar el trabajo a un clúster con herramientas como `spark-submit` o `hadoop-streaming`. Al lanzar una aplicación con `command-runner.jar`, se especifica `CUSTOM_JAR` como tipo de paso en lugar de utilizar un valor como `SPARK`, `STREAMING` o `PIG`. La disponibilidad de las herramientas varía en función de las aplicaciones que haya instalado en el clúster.

El siguiente comando de ejemplo utiliza `command-runner.jar` para enviar un paso mediante `spark-submit`. La `Args` lista se especifica `spark-submit` como comando, seguido del URI de Amazon S3 de la aplicación Spark *my-app.py* con argumentos y valores.

```
aws emr add-steps \
--cluster-id j-2AXXXXXXGAPLF \
--steps Type=CUSTOM_JAR,Name="Run spark-submit using command-runner.jar",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[spark-submit,S3://amzn-s3-demo-bucket/my-app.py,ArgName1,ArgValue1,ArgName2,ArgValue2]
```

En la siguiente tabla se identifican las herramientas adicionales que puede utilizar para ejecutar `command-runner.jar`.


****  

| Nombre de la herramienta | Description (Descripción) | 
| --- | --- | 
| hadoop-streaming | Envía un programa de streaming de Hadoop. En la consola y en algunas otras SDKs, se trata de un paso de streaming. | 
| hive-script | Ejecuta un script de Hive. En la consola y SDKs, este es un paso de Hive. | 
| pig-script | Ejecuta un script de Pig. En la consola y SDKs, este es un Pig Step. | 
| spark-submit |  Ejecuta una aplicación de Spark. En la consola, este es un paso de Spark.  | 
| hadoop-lzo | Ejecuta el [indizador Hadoop LZO](https://github.com/kevinweil/hadoop-lzo/blob/master/README.md) en un directorio. | 
| s3-dist-cp | Copia distribuida de grandes cantidades de datos desde Amazon S3 en HDFS. Para obtener más información, consulte [S3 (s3-dist-cp) DistCp](UsingEMR_s3distcp.md). | 