Reichen Sie einen benutzerdefinierten Schritt ein JAR - 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.

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

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
  1. Öffnen Sie die EMR Amazon-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 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).

  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.

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 ersetzen amzn-s3-demo-bucket mit Ihrem Bucket-Namen.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.3.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 EMR Amazon-Servicerolle und das EC2 Instanzprofil erstellt haben, geben Sie ein, aws emr create-default-roles um sie zu erstellen, bevor Sie den create-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://URI_to_JAR in den Schrittoptionen für die Vorgehensweise in Einen Cluster starten und einen benutzerdefinierten JAR Schritt einreichen 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.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.json

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