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.
Reichen Sie einen benutzerdefinierten Schritt ein JAR
Ein Custom JAR führt ein kompiliertes Java-Programm aus, das Sie auf Amazon S3 hochladen können. Sie sollten das Programm für die Version von Hadoop kompilieren, die Sie starten möchten, und einen CUSTOM_JAR
Schritt an Ihren EMR Amazon-Cluster senden. Weitere Informationen zum Kompilieren einer JAR Datei finden Sie unterBinärdateien mit Amazon erstellen EMR.
Weitere Informationen zum Erstellen einer MapReduce Hadoop-Anwendung finden Sie im MapReduce Tutorial
In diesem Abschnitt werden die Grundlagen für das Einreichen eines benutzerdefinierten JAR Schritts bei Amazon behandeltEMR. Wenn Sie einen benutzerdefinierten JAR Schritt einreichen, können Sie ein Skript schreiben, um Ihre Daten mit der Programmiersprache Java zu verarbeiten.
Reichen Sie einen benutzerdefinierten JAR Schritt mit der Konsole ein
In diesem Beispiel wird beschrieben, wie Sie mit der EMR Amazon-Konsole einen benutzerdefinierten JAR Schritt an einen laufenden Cluster senden.
Um einen benutzerdefinierten JAR Schritt mit der Konsole einzureichen
Öffnen Sie die EMR Amazon-Konsole unter https://console.aws.amazon.com/emr
. -
Wählen Sie unter Cluster List (Clusterliste) den Namen des Clusters aus.
-
Scrollen Sie zum Abschnitt Steps (Schritte) und erweitern Sie ihn. Wählen Sie anschließend Add step (Schritt hinzufügen) aus.
-
Gehen Sie im Dialogfeld Schritt hinzufügen folgendermaßen vor:
-
Wählen Sie als Schritttyp die Option Benutzerdefiniert aus. JAR
-
Akzeptieren Sie für Name den Standardnamen (BenutzerdefiniertJAR), oder geben Sie einen neuen Namen ein.
-
Geben Sie für den JARS3-Speicherort den Speicherort Ihrer JAR Datei ein, oder suchen Sie danach. JARSpeicherort, vielleicht ein Pfad zu S3 oder eine vollständig qualifizierte Java-Klasse im Klassenpfad..
-
Geben Sie unter Arguments (Argumente) Ihre Argumente als durch Leerzeichen getrennte Zeichenfolgen ein oder lassen Sie das Feld leer.
-
Übernehmen Sie unter Action on failure (Aktion bei Fehler) die Standardeinstellung Continue (Fortfahren).
-
-
Wählen Sie Hinzufügen aus. Der Schritt wird in der Konsole mit dem Status "Pending" angezeigt.
-
Bei Ausführung des Schritts ändert sich dessen Status von Pending zu Running und Completed. Wählen Sie das Symbol Refresh über der Spalte "Actions" aus, um den Status zu aktualisieren.
Einen Cluster starten und einen benutzerdefinierten JAR Schritt einreichen mit dem AWS CLI
Um einen Cluster zu starten und einen benutzerdefinierten JAR Schritt einzureichen mit dem AWS CLI
Um einen Cluster zu starten und einen benutzerdefinierten JAR Schritt mit dem zu senden AWS CLI, geben Sie den create-cluster
Unterbefehl mit dem --steps
Parameter ein.
-
Um einen Cluster zu starten und einen benutzerdefinierten JAR Schritt einzureichen, geben Sie den folgenden Befehl ein: replace
myKey
mit dem Namen Ihres EC2 key pair und ersetzenamzn-s3-demo-bucket
mit Ihrem Bucket-Namen.aws emr create-cluster --name "
Test cluster
" --release-labelemr-7.3.0
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --ec2-attributes KeyName=myKey
--instance-typem5.xlarge
--instance-count3
\ --steps Type=CUSTOM_JAR
,Name="Custom JAR Step
",ActionOnFailure=CONTINUE
,Jar=pathtojarfile
,Args=["pathtoinputdata
","pathtooutputbucket
","arg1
","arg2
"]Anmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
Wenn Sie die Instance-Anzahl ohne den
--instance-groups
-Parameter angeben, wird ein einzelner Primärknoten gestartet. Die verbleibenden Instances werden dabei als Core-Knoten gestartet. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.Anmerkung
Wenn Sie noch nicht die standardmäßige EMR Amazon-Servicerolle und das EC2 Instanzprofil erstellt haben, geben Sie ein,
aws emr create-default-roles
um sie zu erstellen, bevor Sie dencreate-cluster
Unterbefehl eingeben.Weitere Informationen zur Verwendung von EMR Amazon-Befehlen in der AWS CLI finden Sie unterhttps://docs.aws.amazon.com/cli/latest/reference/emr.
Abhängigkeiten von Drittanbietern
Manchmal kann es notwendig sein, es in den MapReduce Klassenpfad aufzunehmen, damit es mit Ihrem Programm JARs verwendet werden kann. Sie haben dafür zwei Möglichkeiten:
-
Fügen Sie
--libjars s3://
in den Schrittoptionen für die Vorgehensweise in Einen Cluster starten und einen benutzerdefinierten JAR Schritt einreichen mit dem AWS CLI ein.URI_to_JAR
-
Starten Sie den Cluster mit einer geänderten
mapreduce.application.classpath
-Einstellung inmapred-site.xml
. Verwenden Sie diemapred-site
-Konfigurationsklassifizierung. Um den Cluster mit dem Schritt using zu erstellen AWS CLI, würde das wie folgt aussehen:aws emr create-cluster --release-label
emr-7.3.0
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=myKey
\ --steps Type=CUSTOM_JAR
,Name="Custom JAR Step
",ActionOnFailure=CONTINUE
,Jar=pathtojarfile
,Args=["pathtoinputdata
","pathtooutputbucket
","arg1
","arg2
"] \ --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsonmyConfig.json
:[ { "Classification": "mapred-site", "Properties": { "mapreduce.application.classpath": "
path1
,path2
" } } ]Die durch Kommas getrennte Pfadliste sollte für jede Aufgabe an den JVM Klassenpfad angehängt werden.