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.
Einen benutzerdefinierten JAR-Schritt übermitteln
Eine benutzerdefinierte JAR-Datei führt ein kompiliertes Java-Programm aus, das Sie in Amazon S3 hochladen. Sie sollten das Programm mit der Hadoop-Version kompilieren, die Sie starten möchten, und senden Sie einen CUSTOM_JAR
-Schritt an Ihren Amazon-EMR-Cluster. Weitere Informationen zum Kompilieren einer JAR-Datei finden Sie unter Binärdateien mit Amazon erstellen EMR.
Weitere Informationen zum Erstellen einer MapReduce Hadoop-Anwendung finden Sie im MapReduce Tutorial
In diesem Abschnitt werden die Grundlagen der Übermittlung eines benutzerdefinierten JAR-Schritts in Amazon EMR behandelt. Wenn Sie einen benutzerdefinierten JAR-Schritt übermitteln, können Sie mit der Java-Programmiersprache ein Skript schreiben, das Ihre Daten verarbeitet.
Einen benutzerdefinierten JAR-Schritt mithilfe der Konsole übermitteln
In diesem Beispiel wird beschrieben, wie Sie mithilfe der Amazon-EMR-Konsole einen benutzerdefinierten JAR-Schritt an einen aktiven Cluster senden.
So übermitteln Sie einen benutzerdefinierten JAR-Schritt mithilfe der Konsole
Öffnen Sie die Amazon EMR-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 Custom JAR (Benutzerdefiniertes JAR) als Step type (Schritttyp) aus.
-
Übernehmen Sie unter Name den Standardnamen (Custom JAR) oder geben Sie einen neuen Namen ein.
-
Geben Sie unter JAR S3 location (JAR S3-Speicherort) den Speicherort Ihrer JAR-Datei ein oder navigieren Sie dorthin. Der JAR-Speicherort kann ein Pfad in S3 oder eine voll qualifizierte Java-Klasse im Klassenpfad sein.
-
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.
Starten eines Clusters und Einreichen eines benutzerdefinierten JAR-Schritts mit dem AWS CLI
Um einen Cluster zu starten und einen benutzerdefinierten JAR-Schritt einzureichen, verwenden Sie 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,
myKey
ersetzen Sie ihn durch den Namen Ihres EC2 key pair undamzn-s3-demo-bucket
ersetzen Sie ihn durch Ihren Bucket-Namen.aws emr create-cluster --name "
Test cluster
" --release-labelemr-7.6.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 Amazon EMR-Servicerolle und das EC2 Instanzprofil erstellt haben, geben Sie ein, um sie
aws emr create-default-roles
zu erstellen, bevor Sie dencreate-cluster
Unterbefehl eingeben.Weitere Informationen zur Verwendung von Amazon EMR-Befehlen finden Sie AWS CLI 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 Starten eines Clusters und Einreichen eines benutzerdefinierten JAR-Schritts 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.6.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 Liste der Pfade sollte jedem JVM-Klassenpfad für die Aufgabe angehängt werden.