Wie wird Python Spark Code auf Amazon Aws ausgeführt?

8

Ich habe einen Python-Code in Spark geschrieben und möchte ihn auf Amazon Elastic Map reduzieren.

Mein Code funktioniert auf meinem lokalen Computer sehr gut, aber ich bin etwas verwirrt darüber, wie er auf Amazon AWS ausgeführt wird?

Genauer gesagt, wie soll ich meinen Python-Code auf den Master-Knoten übertragen? Muss ich meinen Python-Code in meinen S3-Bucket kopieren und von dort ausführen? Oder, sollte ich ssh in Master und Scp meinen Python-Code in den Funken-Ordner in Master?

Im Moment habe ich versucht, den Code lokal auf meinem Terminal laufen zu lassen und mich mit der Clusteradresse zu verbinden (ich habe das getan, indem ich die Ausgabe von --help flag von spark gelesen habe, damit ich hier vielleicht ein paar Schritte verpasse)

%Vor%

Ich habe es mit und ohne meine Berechtigungsdatei versucht, d. h.

%Vor%

Es schlägt jedoch fehl und der Stapel-Trace zeigt etwas in den Zeilen von

%Vor%

Ist mein Ansatz korrekt und muss ich die Access-Probleme lösen, um in Gang zu kommen oder gehe ich in eine falsche Richtung?

Was ist der richtige Weg?

Ich habe viel auf youtube gesucht, konnte aber keine Tutorials finden, um Spark auf Amazon's EMR laufen zu lassen.

Wenn es hilft, ist der Datensatz, an dem ich gerade arbeite, Teil des öffentlichen Datensatzes von Amazon.

    
Piyush 05.11.2016, 22:01
quelle

2 Antworten

6
  1. gehen Sie zu EMR, erstellen Sie einen neuen Cluster ... [Empfehlung: Beginnen Sie mit nur einem Knoten, nur zu Testzwecken].
  2. Klicken Sie auf das Kontrollkästchen, um Spark zu installieren. Sie können die anderen Kontrollkästchen deaktivieren, wenn Sie diese zusätzlichen Programme nicht benötigen.
  3. Konfigurieren Sie den Cluster weiter, indem Sie eine VPC und einen Sicherheitsschlüssel (ssh key, a.k.a pem key)
  4. auswählen
  5. warten Sie, bis es hochgefahren ist. Sobald Ihr Cluster "Warten" sagt, können Sie fortfahren.
  6. [spark supporting über die GUI] in der GUI können Sie einen Schritt hinzufügen und Spark-Job auswählen, Ihre Spark-Datei in S3 hochladen und dann den Pfad zu dem neu hochgeladenen auswählen S3-Datei. Sobald es ausgeführt wird, wird es entweder erfolgreich sein oder fehlschlagen. Wenn dies fehlschlägt, warten Sie einen Moment und klicken Sie dann auf "Protokolle anzeigen" in der entsprechenden Zeile in der Liste der Schritte. Optimiere dein Skript, bis es funktioniert.

    [Übergabe über die Befehlszeile] SSH in den Treiberknoten, der den ssh-Anweisungen oben auf der Seite folgt. Verwenden Sie anschließend einen Befehlszeilen-Texteditor, um eine neue Datei zu erstellen, und fügen Sie den Inhalt des Skripts ein. Senden Sie dann neunFile.py per Spark. Wenn dies fehlschlägt, wird die Fehlermeldung direkt an die Konsole ausgegeben. Optimieren Sie Ihr Skript und führen Sie es erneut aus. Tun Sie das, bis Sie es wie erwartet funktioniert haben.

Hinweis: das Ausführen von Jobs von Ihrem lokalen Computer zu einem Remote-Computer ist mühsam, da Sie möglicherweise Ihre lokale Instanz von Funke für einige teure Berechnungen und die Datenübertragung über das Netzwerk verantwortlich machen. Aus diesem Grund möchten Sie AWS EMR-Jobs von EMR aus senden.

    
Kristian 05.11.2016, 23:27
quelle
2

Es gibt zwei typische Möglichkeiten, einen Job in einem Amazon EMR-Cluster auszuführen (ob für Spark oder andere Jobtypen):

Wenn Sie Apache Zeppelin auf Ihrem EMR-Cluster installiert haben , können Sie das tun Verwenden Sie einen Webbrowser, um mit Spark zu interagieren.

Der Fehler, den Sie feststellen, besagt, dass auf Dateien über das Protokoll s3n: zugegriffen wurde, für das AWS-Anmeldeinformationen bereitgestellt werden müssen. Wenn stattdessen auf die Dateien über s3: zugegriffen wird, vermute ich , dass die Anmeldeinformationen von der IAM-Rolle stammen, die den Knoten im Cluster automatisch zugewiesen wird, und dieser Fehler wird behoben.

    
John Rotenstein 05.11.2016 23:26
quelle