Übermitteln von Pig-Aufträgen - Amazon EMR

Übermitteln von Pig-Aufträgen

Dieser Abschnitt zeigt das Senden von Pig-Aufträgen an einen Amazon-EMR-Cluster. Das folgende Beispiel generiert einen Bericht mit der Gesamtzahl der übertragenen Bytes, eine Liste der Top 50 IP-Adressen, eine Liste der externen Top 50-Referrer und die 50 beliebtesten Suchbegriffe bei Bing und Google. Das Pig-Skript befindet sich im Amazon-S3-Bucket s3://elasticmapreduce/samples/pig-apache/do-reports2.pig. Die Eingabedaten befinden sich im Amazon-S3-Bucket s3://elasticmapreduce/samples/pig-apache/input. Die Ausgabe wird in einem Amazon-S3-Bucket gespeichert.

Pig-Aufträge über die Amazon-EMR-Konsole senden

In diesem Beispiel wird beschrieben, wie Sie mithilfe der Amazon-EMR-Konsole einen Pig-Auftrag an einen Cluster senden.

So senden Sie einen Pig-Auftrag
  1. Öffnen Sie die Amazon-EMR-Konsole unterhttps://console.aws.amazon.com/emr.

  2. Wählen Sie Cluster erstellen, um einen neuen Cluster mit Pig zu erstellen. Anweisungen zum Erstellen eines Clusters finden Sie unter Planen und Konfigurieren eines Amazon-EMR-Clusters.

  3. Öffnen Sie ein Terminal und stellen Sie eine SSH-Verbindung zum Hauptknoten Ihres Clusters her, indem Sie die unter Verbindung zum Hauptknoten mithilfe von SSH herstellen beschriebenen Schritte ausführen. Sobald Sie das getan haben, führen Sie die folgenden Schritte aus.

    sudo mkdir -p /home/hadoop/lib/pig/ sudo aws s3 cp s3://elasticmapreduce/libs/pig/0.3/piggybank-0.3-amzn.jar /home/hadoop/lib/pig/piggybank.jar
  4. Klicken Sie in der Konsole die Seite Cluster-Liste aus und klicken Sie den Namen des von Ihnen erstellten Clusters.

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

  6. Gehen Sie im Dialogfeld Schritt hinzufügen folgendermaßen vor:

    • Wählen Sie unter Step type (Schritttyp) die Option Pig program (Pig-Programm) aus.

    • Übernehmen Sie unter Name den Standardnamen („Pig program“) oder geben Sie einen neuen Namen ein.

    • Geben Sie unter Script S3 location (S3-Skriptspeicherort) den Speicherort Ihres Pig-Skripts ein. Beispiel: s3://elasticmapreduce/samples/pig-apache/do-reports2.pig.

    • Unter Input S3 location (S3-Eingabespeicherort) geben Sie den Speicherort der Eingabedaten ein. Beispiel: s3://elasticmapreduce/samples/pig-apache/input.

    • Unter S3-Ausgabespeicherort geben Sie den Namen Ihres Amazon-S3-Ausgabe-Buckets ein oder navigieren zu dem entsprechenden S3-Bucket.

    • Lassen Sie unter Arguments (Parameter) das Feld leer.

    • Übernehmen Sie unter Action on failure (Aktion bei Fehler) die Standardeinstellung Continue (Fortfahren).

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

  8. Bei Ausführung des Schritts ändert sich dessen Status von Pending zu Running und Completed. Wählen Sie über der Spalte Actions (Aktionen) das Symbol Refresh (Ansicht aktualisieren) aus, um den Status zu aktualisieren. Wenn Ihr Schritt abgeschlossen ist, überprüfen Sie Ihren Amazon-S3-Bucket, um sicherzustellen, dass die Ausgabedateien Ihres Pig-Schritts vorhanden sind.

Senden von Pig-Aufträgen über die AWS CLI

So übermitteln Sie einen Pig-Auftrag mithilfe der AWS CLI

Wenn Sie einen Cluster über die AWS CLI starten, geben Sie den Parameter --applications an, um Pig zu installieren. Verwenden Sie den Parameter --steps, um einen Pig-Schritt zu übermitteln.

  1. Um einen Cluster mit installiertem Pig zu starten, geben Sie den folgenden Befehl ein und ersetzen Sie myKey und DOC-EXAMPLE-BUCKET/ durch den Namen Ihres EC2-Schlüsselpaars und Ihres Amazon-S3-Buckets.

    aws emr create-cluster \ --name "Test cluster" \ --log-uri s3://DOC-EXAMPLE-BUCKET/ \ --release-label emr-5.36.1 \ --applications Name=Pig \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3
    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 Parameter --instance-groups angeben, wird ein einzelner Master-Knoten gestartet. Die verbleibenden Instances werden als Core-Knoten aufgerufen. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.

    Anmerkung

    Wenn Sie zuvor nicht die standardmäßige EMR-Servicerolle und das EC2-Instance-Profil erstellt haben, geben Sie aws emr create-default-roles ein, um sie zu erstellen, bevor Sie den Unterbefehl create-cluster eingeben.

  2. Um einen Pig-Schritt einzureichen, geben Sie den folgenden Befehl ein und ersetzen Sie myClusterId und DOC-EXAMPLE-BUCKET durch Ihre Cluster-ID und den Namen Ihres Amazon-S3-Buckets.

    aws emr add-steps \ --cluster-id myClusterId \ --steps Type=PIG,Name="Pig Program",ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://DOC-EXAMPLE-BUCKET/pig-apache/output]

    Dieser Befehl gibt eine Schritt-ID zurück, anhand derer Sie die Ausführung Ihres State-Schritts überprüfen können.

  3. Fragen Sie den Status Ihres Schritts mit dem describe-step-Befehl ab.

    aws emr describe-step --cluster-id myClusterId --step-id s-1XXXXXXXXXXA

    Der State-Wert des Schritts ändert sich mit der Ausführung des Schritts von PENDING zu RUNNING zu COMPLETED. Wenn Ihr Schritt abgeschlossen ist, überprüfen Sie Ihren Amazon-S3-Bucket, um sicherzustellen, dass die Ausgabedateien Ihres Pig-Schritts vorhanden sind.

Weitere Informationen über die Amazon-EMR-Befehle finden Sie unter AWS CLI in der AWS CLI-Befehlsreferenz.