

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Befehle und Skripte auf einem Amazon-EMR-Cluster ausführen
<a name="emr-commandrunner"></a>

In diesem Thema wird beschrieben, wie Sie einen Befehl oder ein Skript als Schritt auf Ihrem Cluster ausführen. Das Ausführen eines Befehls oder Skripts als Schritt ist eine der vielen Möglichkeiten, wie Sie [Arbeit an einen Cluster weiterleiten](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) können. Dies ist in den folgenden Situationen hilfreich:
+ Wenn Sie keinen SSH-Zugriff auf Ihren Amazon-EMR-Cluster haben
+ Wenn Sie einen Bash- oder Shell-Befehl zur Fehlerbehebung in Ihrem Cluster ausführen möchten

Sie können ein Skript ausführen, wenn Sie einen Cluster erstellen oder wenn sich Ihr Cluster im `WAITING`-Status befindet. Um ein Skript auszuführen, bevor die Schrittverarbeitung beginnt, verwenden Sie stattdessen eine Bootstrap-Aktion. Weitere Informationen finden Sie unter [Bootstrap-Aktionen zum Installieren zusätzlicher Software erstellen](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html) im *Verwaltungshandbuch für Amazon EMR*.

Amazon EMR bietet die folgenden Tools, mit denen Sie Skripts, Befehle und andere Cluster-Programme ausführen können. Sie können beide Tools über die Amazon-EMR-Managementkonsole oder die AWS CLI aufrufen.

`command-runner.jar`  
Befindet sich auf dem Amazon-EMR-AMI für Ihren Cluster. Sie können `command-runner.jar` verwenden, um Befehle auf Ihrem Cluster auszuführen. Sie geben den Pfad `command-runner.jar` an, ohne den vollständigen Pfad zu verwenden. 

`script-runner.jar`  
 Sie können `script-runner.jar` nutzen, um damit lokal oder auf Amazon S3 gespeicherte Skripte auf Ihrem Cluster auszuführen.   
 Für Amazon EMR 7.13 und höher befindet sich dieses JAR auf dem Amazon EMR-AMI für Ihren Cluster. Sie können angeben, `script-runner.jar` ohne die vollständige URI zu verwenden.   
Für Amazon EMR 7.12 und niedriger wird dieses JAR auf Amazon S3 in der Region gehostet, in der `{{<region>}}` sich Ihr Amazon EMR-Cluster befindet. `s3://{{<region>}}.elasticmapreduce/libs/script-runner/script-runner.jar` Sie müssen die vollständige URI auf `script-runner.jar` angeben, wenn Sie einen Schritt einreichen. 

## Reichen Sie einen benutzerdefinierten JAR-Schritt ein, um ein Skript oder einen Befehl auszuführen
<a name="emr-commandrunner-examples"></a>

Die folgenden AWS CLI Beispiele veranschaulichen einige gängige Anwendungsfälle von `command-runner.jar` und `script-runner.jar` auf Amazon EMR.

**Example : Ausführen eines Befehls in einem Cluster mit `command-runner.jar`**  
Wenn Sie `command-runner.jar` verwenden, geben Sie Befehle, Optionen und Werte in der Argumentliste Ihres Schritts an.  
Im folgenden AWS CLI Beispiel wird ein Schritt an einen laufenden Cluster weitergeleitet, der aufruft. `command-runner.jar` Der in der `Args` Liste angegebene Befehl lädt ein {{my-script.sh}} von Amazon S3 aufgerufenes Skript in das Hadoop-Benutzer-Home-Verzeichnis herunter. Der Befehl ändert dann die Berechtigungen des Skripts und wird ausgeführt. {{my-script.sh}}  
Wenn Sie den verwenden AWS CLI, sollten die Elemente in Ihrer `Args` Liste durch Kommas getrennt sein, ohne Leerzeichen zwischen den Listenelementen. Verwenden Sie z. B. `Args=[example-command,example-option,"example option value"]` statt `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 : Ausführen eines Skripts in einem Cluster mit `script-runner.jar`**  
Wenn Sie `script-runner.jar` verwenden, geben Sie das Skript, das Sie ausführen möchten, in der Argumentliste Ihres Schritts an.  
In den folgenden AWS CLI Beispielen wird ein Schritt an einen laufenden Cluster weitergeleitet, der aufruft. `script-runner.jar` Das aufgerufene Skript {{my-script.sh}} ist auf Amazon S3 gespeichert. Sie können auch lokale Skripte angeben, die auf dem Hauptknoten Ihres Clusters gespeichert sind.   
 Wenn der Cluster Amazon EMR 7.13 oder höher verwendet, können Sie angeben, `script-runner.jar` ohne den vollständigen Pfad zu verwenden:   

```
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=script-runner.jar,Args=[{{s3://amzn-s3-demo-bucket/my-script.sh}}]
```
 Wenn der Cluster Amazon EMR 7.12 oder niedriger verwendet, müssen Sie die vollständige URI von angeben, `script-runner.jar` wenn Sie einen Schritt einreichen:   

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

## Andere Verwendungsmöglichkeiten von `command-runner.jar`
<a name="emr-commandrunner-other-uses"></a>

Sie können `command-runner.jar` auch verwenden, um Arbeiten mit Tools wie `spark-submit` oder `hadoop-streaming` in einen Cluster einzureichen. Wenn Sie eine Anwendung mit `command-runner.jar` starten, geben Sie `CUSTOM_JAR` als Schritttyp an, anstatt einen Wert wie `SPARK`, `STREAMING` oder `PIG` zu verwenden. Die Verfügbarkeit der Tools hängt davon ab, welche Anwendungen Sie auf dem Cluster installiert haben.

Der folgende Beispielbefehl `command-runner.jar` dient zum Senden eines Schritts mit `spark-submit`. Die `Args` Liste gibt `spark-submit` als Befehl an, gefolgt von der Amazon S3 S3-URI der Spark-Anwendung {{my-app.py}} mit Argumenten und Werten.

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

In der folgenden Tabelle sind zusätzliche Tools aufgeführt, die Sie mit `command-runner.jar` verwenden können.


****  

| Name des Tools | Description | 
| --- | --- | 
| hadoop-streaming | Sendet ein Hadoop-Streaming-Programm. In der Konsole und einige SDKs ist dies ein Streaming-Schritt. | 
| hive-script | Führt ein Hive-Skript aus. In der Konsole und in SDKs ist dies ein Hive-Schritt. | 
| pig-script | Führt ein Pig-Skript aus. In der Konsole und in SDKs ist dies ein Pig-Schritt. | 
| spark-submit | Führt eine Spark-Anwendung aus. In der Konsole ist dies ein Spark-Schritt. | 
| hadoop-lzo | Führt die [Hadoop-LZO-Indexerstellung](https://github.com/kevinweil/hadoop-lzo/blob/master/README.md) in einem Verzeichnis aus. | 
| s3-dist-cp | Verteiltes Kopieren großer Datenmengen aus Amazon S3 in HDFS. Weitere Informationen finden Sie unter [DistCp S3 (s3-dist-cp)](UsingEMR_s3distcp.md). | 