

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`  
Gehostet auf Amazon S3 auf `s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar`, wobei `<region>` die Region ist, in der sich Ihr Amazon-EMR-Cluster befindet. Sie können `script-runner.jar` nutzen, um damit lokal oder auf Amazon S3 gespeicherte Skripte auf Ihrem Cluster auszuführen. 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.  
Im folgenden AWS CLI Beispiel wird ein Schritt an einen laufenden Cluster weitergeleitet, der aufruft. `script-runner.jar` In diesem Fall *my-script.sh* wird das aufgerufene Skript auf Amazon S3 gespeichert. Sie können auch lokale Skripte angeben, die auf dem Hauptknoten Ihres Clusters gespeichert sind.  

```
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 einigen SDKs anderen ist dies ein Streaming-Schritt. | 
| hive-script | Führt ein Hive-Skript aus. In der Konsole und SDKs das ist ein Hive-Schritt. | 
| pig-script | Führt ein Pig-Skript aus. In der Konsole und SDKs das ist 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). | 