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
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 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 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.jarverwenden, um Befehle auf Ihrem Cluster auszuführen. Sie geben den Pfadcommand-runner.jaran, ohne den vollständigen Pfad zu verwenden. script-runner.jar-
Gehostet auf Amazon S3 auf
s3://, wobei<region>.elasticmapreduce/libs/script-runner/script-runner.jardie Region ist, in der sich Ihr Amazon-EMR-Cluster befindet. Sie können<region>script-runner.jarnutzen, um damit lokal oder auf Amazon S3 gespeicherte Skripte auf Ihrem Cluster auszuführen. Sie müssen die vollständige URI aufscript-runner.jarangeben, wenn Sie einen Schritt einreichen.
Reichen Sie einen benutzerdefinierten JAR-Schritt ein, um ein Skript oder einen Befehl auszuführen
Die folgenden AWS CLI Beispiele veranschaulichen einige gängige Anwendungsfälle von command-runner.jar und script-runner.jar auf Amazon EMR.
Beispiel : 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-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"]
Beispiel : 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-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]
Andere Verwendungsmöglichkeiten von command-runner.jar
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-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]
In der folgenden Tabelle sind zusätzliche Tools aufgeführt, die Sie mit command-runner.jar verwenden können.
| Name des Tools | Beschreibung |
|---|---|
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 |
s3-dist-cp |
Verteiltes Kopieren großer Datenmengen aus Amazon S3 in HDFS. Weitere Informationen finden Sie unter DistCp S3 (s3-dist-cp). |