Einen benutzerdefinierten JAR-Schritt übermitteln - Amazon EMR

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 der Apache Hadoop-Dokumentation.

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
  1. Öffnen Sie die Amazon EMR-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie unter Cluster List (Clusterliste) den Namen des Clusters aus.

  3. Scrollen Sie zum Abschnitt Steps (Schritte) und erweitern Sie ihn. Wählen Sie anschließend Add step (Schritt hinzufügen) aus.

  4. 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).

  5. Wählen Sie Hinzufügen aus. Der Schritt wird in der Konsole mit dem Status "Pending" angezeigt.

  6. 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 und amzn-s3-demo-bucket ersetzen Sie ihn durch Ihren Bucket-Namen.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.6.0 \ --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --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 den create-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://URI_to_JAR in den Schrittoptionen für die Vorgehensweise in Starten eines Clusters und Einreichen eines benutzerdefinierten JAR-Schritts mit dem AWS CLI ein.

  • Starten Sie den Cluster mit einer geänderten mapreduce.application.classpath-Einstellung in mapred-site.xml. Verwenden Sie die mapred-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.json

    myConfig.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.