

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Eseguire comandi e script su un cluster Amazon EMR
<a name="emr-commandrunner"></a>

In questo argomento viene illustrato come eseguire un comando o uno script come fase del cluster. L'esecuzione di un comando o di uno script come fase è uno dei molti modi che puoi [Invia lavoro a un cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) ed è utile nelle seguenti situazioni:
+ Quando non hai accesso SSH al tuo cluster Amazon EMR
+ Quando si desidera eseguire un comando bash o shell per risolvere i problemi del cluster

Puoi eseguire uno script sia quando crei un cluster che quando lo stato del cluster è `WAITING`. Per eseguire uno script prima dell'inizio dell'elaborazione delle fasi, utilizza invece un'operazione di bootstrap. Per ulteriori informazioni, consulta [Creazione di operazioni di bootstrap per l'installazione di software aggiuntivo](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html) nella *Guida alla gestione di Amazon EMR*.

Amazon EMR fornisce i seguenti strumenti per aiutarti a eseguire script, comandi e altri programmi in cluster. Puoi richiamare entrambi gli strumenti utilizzando la console di gestione Amazon EMR o la AWS CLI.

`command-runner.jar`  
Situato sull'AMI Amazon EMR per il tuo cluster. Puoi utilizzare `command-runner.jar` per eseguire comandi sul cluster. Specificare `command-runner.jar` senza utilizzare il suo percorso completo. 

`script-runner.jar`  
Ospitato su Amazon S3 a `s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar` dove `<region>` è la Regione in cui risiede il cluster Amazon EMR. Puoi utilizzare `script-runner.jar` per eseguire script salvati localmente o su Amazon S3 sul cluster. Devi specificare l'URI completo di `script-runner.jar` quando invii un passaggio.

## Invia un passaggio JAR personalizzato per l'esecuzione di uno script o di un comando
<a name="emr-commandrunner-examples"></a>

I seguenti AWS CLI esempi illustrano alcuni casi d'uso comuni di `command-runner.jar` e `script-runner.jar` su Amazon EMR.

**Example : esecuzione di un comando su un cluster utilizzando `command-runner.jar`**  
Quando si utilizza `command-runner.jar`, si specificano comandi, opzioni e valori nell'elenco degli argomenti del passaggio.  
L' AWS CLI esempio seguente invia un passaggio a un cluster in esecuzione che richiama. `command-runner.jar` Il comando specificato nell'`Args`elenco scarica uno script chiamato *my-script.sh* da Amazon S3 nella home directory dell'utente hadoop. Il comando modifica quindi le autorizzazioni dello script e viene eseguito. *my-script.sh*  
Quando si utilizza il AWS CLI, gli elementi dell'`Args`elenco devono essere separati da virgole senza spazi bianchi tra gli elementi dell'elenco. Ad esempio, `Args=[example-command,example-option,"example option value"]` anziché `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 : esecuzione di uno script su un cluster utilizzando `script-runner.jar`**  
Quando si utilizza `script-runner.jar`, si specifica lo script che si desidera eseguire nell'elenco degli argomenti del passaggio.  
L' AWS CLI esempio seguente invia un passaggio a un cluster in esecuzione che richiama. `script-runner.jar` In questo caso, lo script chiamato *my-script.sh* viene archiviato su Amazon S3. È possibile specificare anche script locali archiviati nel nodo principale del 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]
```

## Altri modi per utilizzare `command-runner.jar`
<a name="emr-commandrunner-other-uses"></a>

È possibile utilizzare anche `command-runner.jar` per inviare lavori a un cluster con strumenti come `spark-submit` o `hadoop-streaming`. Quando si avvia un'applicazione utilizzando `command-runner.jar`, specifichi `CUSTOM_JAR` come tipo di passaggio invece di utilizzare un valore come `SPARK`, `STREAMING`, oppure `PIG`. La disponibilità degli strumenti varia a seconda delle applicazioni installate sul cluster.

Il seguente comando di esempio utilizza `command-runner.jar` per inviare un passaggio utilizzando `spark-submit`. L'`Args`elenco specifica `spark-submit` come comando, seguito dall'URI Amazon S3 dell'*my-app.py*applicazione Spark con argomenti e valori.

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

La tabella seguente identifica gli strumenti aggiuntivi che è possibile eseguire utilizzando `command-runner.jar`.


****  

| Nome dello strumento | Description | 
| --- | --- | 
| hadoop-streaming | Invia un programma di streaming Hadoop. Nella console e in altri casi SDKs, questa è una fase di streaming. | 
| hive-script | Esegue uno script Hive. Nella console e SDKs, questa è una fase di Hive. | 
| pig-script | Esegue uno script Pig. Nella console e SDKs, questo è un passo Pig. | 
| spark-submit |  Esegue un'applicazione Spark. Nella console, questa è una fase Spark.  | 
| hadoop-lzo | Esegue [l'indicizzatore Hadoop LZO](https://github.com/kevinweil/hadoop-lzo/blob/master/README.md) su una directory. | 
| s3-dist-cp | Copia distribuita di grandi quantità di dati da Amazon S3 in HDFS. Per ulteriori informazioni, consulta [S3 (s3-dist-cp) DistCp](UsingEMR_s3distcp.md). | 