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
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 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 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.jarpara ejecutar comandos en su clúster. Especificacommand-runner.jarsin utilizar su ruta completa. script-runner.jar-
Puede usar
script-runner.jarpara ejecutar scripts guardados localmente o en Amazon S3 en su clúster.Para Amazon EMR 7.13 y versiones posteriores, este contenedor se encuentra en la AMI de Amazon EMR del clúster. Puede especificarlo
script-runner.jarsin usar su URI completo.Para Amazon EMR 7.12 y versiones anteriores, este contenedor está alojado en Amazon S3,
s3://donde se<region>.elasticmapreduce/libs/script-runner/script-runner.jarencuentra la región en la que reside el clúster de Amazon EMR. Debe especificar el URI completo de<region>script-runner.jaral enviar un paso.
Envío de un paso JAR personalizado para ejecutar un script o un comando
Los siguientes AWS CLI ejemplos ilustran algunos casos de uso comunes de command-runner.jar y script-runner.jar en Amazon EMR.
ejemplo: 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-idj-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 cps3://amzn-s3-demo-bucket/my-script.sh/home/hadoop; chmod u+x /home/hadoop/my-script.sh; cd /home/hadoop; ./my-script.sh"]
ejemplo: 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.
Los siguientes AWS CLI ejemplos envían un paso a un clúster en ejecución que lo invoca. script-runner.jar El script llamado my-script.sh está almacenado en Amazon S3. También puede especificar los scripts locales que se almacenan en el nodo maestro del clúster.
Si el clúster utiliza Amazon EMR 7.13 o una versión posterior, puede especificarlo script-runner.jar sin utilizar su ruta completa:
aws emr add-steps \ --cluster-idj-2AXXXXXXGAPLF\ --steps Type=CUSTOM_JAR,Name="Run a script from S3 with script-runner.jar",ActionOnFailure=CONTINUE,Jar=script-runner.jar,Args=[s3://amzn-s3-demo-bucket/my-script.sh]
Si el clúster utiliza Amazon EMR 7.12 o una versión anterior, debe especificar el URI completo script-runner.jar al enviar un paso:
aws emr add-steps \ --cluster-idj-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
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-idj-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 algunos SDK, este es un paso de streaming. |
hive-script |
Ejecuta un script de Hive. En la consola y los SDK, este es un paso de Hive. |
pig-script |
Ejecuta un script de Pig. En la consola y los SDK, este es un paso de Pig. |
spark-submit |
Ejecuta una aplicación de Spark. En la consola, este es un paso de Spark. |
hadoop-lzo |
Ejecuta el indizador Hadoop LZO |
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. |