Verwalteten Hadoop-/Spark-Cluster mit Cloud Dataproc bereitstellen und verwenden (Befehlszeile)

1. Übersicht

Cloud Dataproc ist ein verwalteter Spark- und Hadoop-Dienst, mit dem Sie Open-Source-Datentools für Batchverarbeitungen, Abfragen, Streaming und maschinelles Lernen verwenden können. Mithilfe der Cloud Dataproc-Automatisierung lassen sich Cluster schnell erstellen, einfach verwalten und Kosten senken, weil Sie nicht mehr benötigte Cluster deaktivieren können. Außerdem haben Sie so die Möglichkeit sich stärker auf Jobs und Daten zu konzentrieren.

Diese Anleitung basiert auf https://cloud.google.com/dataproc/overview.

Lerninhalte

  • Verwalteten Cloud Dataproc-Cluster (bei dem Apache Spark vorinstalliert ist) erstellen
  • Spark-Job senden
  • Größe eines Clusters anpassen
  • So stellen Sie eine SSH-Verbindung zum Masterknoten eines Dataproc-Clusters her
  • Cluster, Jobs und Firewallregeln mit gcloud untersuchen
  • Cluster herunterfahren

Voraussetzungen

Wie möchten Sie diese Anleitung nutzen?

<ph type="x-smartling-placeholder"></ph> Nur bis zum Ende lesen Lies sie dir durch und absolviere die Übungen

Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud Platform-Diensten bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Mittel Kompetent

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie ein Konto erstellen.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID bezeichnet.

  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.

Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer können an einem kostenlosen Testzeitraum mit 300$Guthaben teilnehmen.

3. Cloud Dataproc API und Google Compute Engine API aktivieren

Klicken Sie auf das Menüsymbol oben links auf dem Bildschirm.

2bfc27ef9ba2ec7d.png

Wählen Sie im Drop-down-Menü den API-Manager aus.

408af5f32c4b7c25.png

Klicken Sie auf APIs und Dienste aktivieren.

a9c0e84296a7ba5b.png

Suchen Sie nach „Compute Engine“. in das Suchfeld ein. Klicken Sie auf „Google Compute Engine API“. in der angezeigten Ergebnisliste.

b6adf859758d76b3.png

Klicken Sie auf der Seite "Google Compute Engine" auf Aktivieren.

da5584a1cbc77104.png

Wenn die Funktion aktiviert ist, klicke auf den Pfeil nach links, um zurückzugehen.

Suchen Sie jetzt nach „Google Cloud Dataproc API“. aktivieren und aktivieren.

f782195d8e3d732a.png

4. Cloud Shell starten

Diese Debian-basierte virtuelle Maschine verfügt über alle erforderlichen Entwicklungstools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser – ja, er funktioniert auf Chromebooks.

  1. Klicken Sie einfach auf Cloud Shell aktivieren fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q, um Cloud Shell über die Cloud Console zu aktivieren. Die Bereitstellung und Verbindung mit der Umgebung dauert einen Moment.

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre PROJECT_ID eingestellt ist.

gcloud auth list

Befehlsausgabe

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Sollte das Projekt aus irgendeinem Grund nicht eingerichtet sein, geben Sie einfach den folgenden Befehl ein:

gcloud config set project <PROJECT_ID>

Du suchst dein Gerät (PROJECT_ID)? Sehen Sie nach, welche ID Sie bei den Einrichtungsschritten verwendet haben, oder rufen Sie sie im Dashboard der Cloud Console auf:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell legt außerdem standardmäßig einige Umgebungsvariablen fest, die bei der Ausführung zukünftiger Befehle nützlich sein können.

echo $GOOGLE_CLOUD_PROJECT

Befehlsausgabe

<PROJECT_ID>
  1. Legen Sie schließlich die Standardzone und die Projektkonfiguration fest.
gcloud config set compute/zone us-central1-f

Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.

5. Cloud Dataproc-Cluster erstellen

Nach dem Start von Cloud Shell können Sie über die Befehlszeile den gcloud-Befehl des Cloud SDK oder andere Tools aufrufen, die auf der VM-Instanz verfügbar sind.

Wählen Sie einen Clusternamen für dieses Lab aus:

$ CLUSTERNAME=${USER}-dplab

Erstellen Sie zuerst einen neuen Cluster:

$ gcloud dataproc clusters create ${CLUSTERNAME} \
  --region=us-central1 \
  --scopes=cloud-platform \
  --tags codelab \
  --zone=us-central1-c

Die Standardclustereinstellungen, die zwei Worker-Knoten enthalten, sollten für diese Anleitung ausreichen. Der obige Befehl enthält die Option --zone zur Angabe der geografischen Zone, in der der Cluster erstellt wird, sowie die beiden erweiterten Optionen --scopes und --tags. Diese werden unten erläutert, wenn Sie die von ihnen aktivierten Funktionen verwenden. Informationen zur Verwendung von Befehlszeilen-Flags zum Anpassen von Clustereinstellungen finden Sie im Cloud SDK-Befehl gcloud dataproc clusters create.

6. Spark-Job an den Cluster senden

Sie können einen Job über eine Cloud Dataproc API-jobs.submit-Anfrage, mit dem gcloud-Befehlszeilentool oder über die Google Cloud Platform Console senden. Sie können auch über SSH eine Verbindung zu einer Maschineninstanz in Ihrem Cluster herstellen und dann einen Job über die Instanz ausführen.

So senden Sie einen Job mit dem gcloud-Tool über die Cloud Shell-Befehlszeile:

$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
  --class org.apache.spark.examples.SparkPi \
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000

Während der Jobausführung wird die Ausgabe im Cloud Shell-Fenster angezeigt.

Unterbrechen Sie die Ausgabe, indem Sie Strg + C drücken. Dadurch wird der Befehl gcloud beendet, der Job wird aber weiterhin im Dataproc-Cluster ausgeführt.

7. Jobs auflisten und Verbindung wiederherstellen

Auftragsliste drucken:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

Der zuletzt gesendete Job steht oben in der Liste. Kopieren Sie die Job-ID und fügen Sie sie anstelle von „jobId“ ein in den Befehl unten ein. Der Befehl stellt eine neue Verbindung zum angegebenen Job her und zeigt die Ausgabe an:

$ gcloud dataproc jobs wait jobId

Wenn der Job abgeschlossen ist, enthält die Ausgabe eine Annäherung des Pi-Werts.

493928df54f61386.png

8. Größe des Clusters anpassen

Wenn Sie größere Berechnungen ausführen möchten, können Sie Ihrem Cluster weitere Knoten hinzufügen, um ihn zu beschleunigen. Mit Dataproc können Sie Ihrem Cluster jederzeit Knoten hinzufügen oder Knoten aus Ihrem Cluster entfernen.

Prüfen Sie die Clusterkonfiguration:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Vergrößern Sie den Cluster durch Hinzufügen einiger Knoten auf Abruf:

$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2

Sehen Sie sich den Cluster noch einmal an:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Neben dem workerConfig aus der ursprünglichen Clusterbeschreibung gibt es jetzt auch eine secondaryWorkerConfig, die zwei instanceNames für die Worker auf Abruf enthält. In Dataproc wird als Clusterstatus „Bereit“ angezeigt, während die neuen Knoten gestartet werden.

Da Sie mit zwei Knoten begonnen haben und jetzt vier Knoten haben, sollten Ihre Spark-Jobs etwa doppelt so schnell ausgeführt werden.

9. SSH-Verbindung zum Cluster herstellen

Stellen Sie über SSH eine Verbindung zum Masterknoten her, dessen Instanzname immer dem Clusternamen mit angehängtem -m entspricht:

$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c

Wenn Sie zum ersten Mal einen SSH-Befehl in Cloud Shell ausführen, werden dort SSH-Schlüssel für Ihr Konto generiert. Sie können eine Passphrase wählen oder vorerst eine leere Passphrase verwenden und diese später bei Bedarf mit ssh-keygen ändern.

Prüfen Sie den Hostnamen auf der Instanz:

$ hostname

Da Sie beim Erstellen des Clusters --scopes=cloud-platform angegeben haben, können Sie gcloud-Befehle in Ihrem Cluster ausführen. Listen Sie die Cluster in Ihrem Projekt auf:

$ gcloud dataproc clusters list

Melden Sie sich anschließend von der SSH-Verbindung ab:

$ logout

10. Tags untersuchen

Beim Erstellen des Clusters haben Sie die Option --tags hinzugefügt, um jedem Knoten im Cluster ein Tag hinzuzufügen. Mit Tags werden jedem Knoten Firewallregeln hinzugefügt. Sie haben in diesem Codelab keine passenden Firewallregeln erstellt, können aber die Tags auf einem Knoten und die Firewallregeln im Netzwerk prüfen.

Geben Sie die Beschreibung des Master-Knotens aus:

$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c

Suchen Sie nach tags: am Ende der Ausgabe. Sie sehen, dass codelab enthalten ist.

Drucken Sie die Firewallregeln aus:

$ gcloud compute firewall-rules list

Beachten Sie die Spalten SRC_TAGS und TARGET_TAGS. Durch Anhängen eines Tags an eine Firewallregel können Sie angeben, dass es auf allen Knoten mit diesem Tag verwendet werden soll.

11. Cluster herunterfahren

Sie können einen Cluster über die Cloud Dataproc API-Anfrage clusters.delete, über die Befehlszeile mit der ausführbaren Datei gcloud dataproc clusters delete oder über die Google Cloud Platform Console herunterfahren.

Fahren wir den Cluster jetzt über die Cloud Shell-Befehlszeile herunter:

$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1

12. Glückwunsch!

Sie haben gelernt, wie Sie einen Dataproc-Cluster erstellen, einen Spark-Job senden, die Größe eines Clusters anpassen, sich über SSH beim Masterknoten anmelden, mit gcloud Cluster, Jobs und Firewallregeln prüfen und den Cluster mit gcloud herunterfahren.

Weitere Informationen

Lizenz

Dieses Werk ist unter einer Creative Commons Attribution 3.0 Generic License und einer Apache 2.0-Lizenz lizenziert.