

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Executar comandos e scripts em um cluster do Amazon EMR
<a name="emr-commandrunner"></a>

Este tópico aborda como executar um comando ou script como uma etapa no cluster. Executar um comando ou script como uma etapa é uma das várias maneiras de [enviar trabalhos a um cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) e serve para as seguintes situações:
+ Quando você não tem acesso SSH ao cluster do Amazon EMR
+ Quando você quer executar um comando bash ou shell para solucionar problemas no cluster

Você pode executar um script ao criar o cluster ou quando o cluster estiver no estado `WAITING`. Para executar um script antes do início do processamento de etapas, em vez disso, use uma ação de bootstrap. Para obter mais informações sobre ações de bootstrap, consulte [Create bootstrap actions to install additional softwarel](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html) no *Guia de gerenciamento do Amazon EMR*.

O Amazon EMR fornece as seguintes ferramentas que ajudam a executar scripts, comandos e outros programas no cluster. É possível invocar as duas ferramentas usando o console de gerenciamento do Amazon EMR ou o a AWS CLI.

`command-runner.jar`  
Localizado na AMI do Amazon EMR do cluster. Você pode usar `command-runner.jar` para executar comandos no cluster. Especifique `command-runner.jar` sem usar o caminho completo. 

`script-runner.jar`  
Hospedado no Amazon S3, em `s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar`, onde `<region>` está a região em que o cluster do Amazon EMR reside. Você pode usar `script-runner.jar` para executar scripts salvos no local ou no Amazon S3 em seu cluster. É necessário especificar o URI completo de `script-runner.jar` ao enviar uma etapa.

## Enviar uma etapa JAR personalizada para executar um script ou comando
<a name="emr-commandrunner-examples"></a>

Os AWS CLI exemplos a seguir ilustram alguns casos de uso comuns do `command-runner.jar` e `script-runner.jar` no Amazon EMR.

**Example : Executar um comando em um cluster usando `command-runner.jar`**  
Ao usar `command-runner.jar`, você especifica comandos, opções e valores na lista de argumentos da etapa.  
O AWS CLI exemplo a seguir envia uma etapa para um cluster em execução que invoca. `command-runner.jar` O comando especificado na `Args` lista baixa um script chamado *my-script.sh* do Amazon S3 para o diretório inicial do usuário do hadoop. Em seguida, o comando modifica as permissões e a execução *my-script.sh* do script.  
Quando você usa o AWS CLI, os itens em sua `Args` lista devem ser separados por vírgula, sem espaços em branco entre os elementos da lista. Por exemplo, `Args=[example-command,example-option,"example option value"]` em vez 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 : executar um script em um cluster usando `script-runner.jar`**  
Ao usar `script-runner.jar`, você especifica o script que deseja executar na lista de argumentos da etapa.  
O AWS CLI exemplo a seguir envia uma etapa para um cluster em execução que invoca. `script-runner.jar` Nesse caso, o script chamado *my-script.sh* é armazenado no Amazon S3. Também é possível especificar scripts locais que são armazenados no nó principal do cluster.  

```
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]
```

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

Você também pode usar `command-runner.jar` para enviar trabalhos para um cluster usando ferramentas como `spark-submit` ou `hadoop-streaming`. Ao iniciar uma aplicação usando `command-runner.jar`, você especifica `CUSTOM_JAR` como o tipo de etapa em vez de usar um valor como `SPARK`, `STREAMING` ou `PIG`. A disponibilidade da ferramenta varia de acordo com as aplicações instaladas no cluster.

O comando de exemplo a seguir utiliza `command-runner.jar` para enviar uma etapa usando `spark-submit`. A `Args` lista especifica `spark-submit` como comando, seguido pelo URI do Amazon S3 do *my-app.py* aplicativo Spark com argumentos e 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]
```

A tabela a seguir identifica outras ferramentas que você pode executar usando `command-runner.jar`.


****  

| Nome da ferramenta | Description | 
| --- | --- | 
| hadoop-streaming | Envia um programa de transmissão do Hadoop. No console e em alguns SDKs, essa é uma etapa de streaming. | 
| hive-script | Executa um script do Hive. No console e SDKs, esta é uma etapa do Hive. | 
| pig-script | Executa um script do Pig. No console e SDKs, isso é um Pig Step. | 
| spark-submit |  Executa uma aplicação Spark. No console, esta é uma etapa do Spark.  | 
| hadoop-lzo | Executa o [indexador LZO do Hadoop](https://github.com/kevinweil/hadoop-lzo/blob/master/README.md) em um diretório. | 
| s3-dist-cp | Copia de forma distribuída grandes quantidades de dados do Amazon S3 para o HDFS. Para obter mais informações, consulte [S3 DistCp (s3-dist-cp)](UsingEMR_s3distcp.md). | 