Ziele
In dieser Anleitung wird Folgendes erläutert:
- Einen Managed Service for Apache Spark-Cluster erstellen und Apache HBase und Apache ZooKeeper auf dem Cluster installieren
- Eine HBase-Tabelle mit der HBase-Shell erstellen, die auf dem Masterknoten des Managed Service for Apache Spark-Clusters ausgeführt wird
- Mit Cloud Shell einen Java- oder PySpark-Spark-Job an den Managed Service for Apache Spark senden, der Daten in die HBase-Tabelle schreibt und daraus liest
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Verwenden Sie den Preisrechner.
Hinweis
Erstellen Sie ein Google Cloud Platform-Projekt, falls dies noch nicht geschehen ist.
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch nicht mit Google Cloudvertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Managed Service for Apache Spark-Cluster erstellen
Führen Sie den folgenden Befehl in einem Cloud Shell-Sitzungsterminal aus, um:
- die HBase- und ZooKeeper-Komponenten zu installieren
- drei Worker-Knoten bereitzustellen (für die Ausführung des Codes in dieser Anleitung werden drei bis fünf Worker empfohlen)
- das Component Gateway zu aktivieren
- die Image-Version 2.0 zu verwenden
- mit dem Flag
--propertiesdie HBase-Konfiguration und die HBase-Bibliothek zu den Klassenpfaden des Spark-Treibers und -Executors hinzuzufügen.
gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=HBASE,ZOOKEEPER \ --num-workers=3 \ --enable-component-gateway \ --image-version=2.0 \ --properties='spark:spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark:spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Connector-Installation prüfen
Stellen Sie über die Google Cloud Console oder ein Cloud Shell-Sitzungsterminal eine SSH-Verbindung zum Clustermaster des Managed Service for Apache Spark-Clusters her.
Prüfen Sie die Installation des Apache HBase Spark-Connectors auf dem Masterknoten:
Beispielausgabe:ls -l /usr/lib/spark/jars | grep hbase-spark
-rw-r--r-- 1 root root size date time hbase-spark-connector.version.jar
Lassen Sie das SSH-Sitzungsterminal geöffnet, um:
- eine HBase-Tabelle zu erstellen
- (Java-Nutzer) Befehle auszuführen auf dem Master knoten des Clusters, um die Versionen der auf dem Cluster installierten Komponenten zu ermitteln
- die HBase-Tabelle zu scannen nach der Ausführung des Codes
HBase-Tabelle erstellen
Führen Sie die in diesem Abschnitt aufgeführten Befehle im SSH-Sitzungsterminal des Masterknotens aus, das Sie im vorherigen Schritt geöffnet haben.
Öffnen Sie die HBase-Shell:
hbase shell
Erstellen Sie eine HBase-Tabelle namens „my-table“ mit einer Spaltenfamilie „cf“:
create 'my_table','cf'
- Klicken Sie in der Google Cloud Console in den Google Cloud Console Component Gateway-Links
auf HBase
, um die Apache HBase-UI zu öffnen und die Tabellenerstellung zu bestätigen.
my-tableist auf der Startseite im Bereich Tabellen aufgeführt.
- Klicken Sie in der Google Cloud Console in den Google Cloud Console Component Gateway-Links
auf HBase
, um die Apache HBase-UI zu öffnen und die Tabellenerstellung zu bestätigen.
Spark-Code ansehen
Java
Python
Code ausführen
Öffnen Sie ein Cloud Shell-Sitzungsterminal.
Klonen Sie das GitHub GoogleCloudDataproc/cloud-dataproc Repository in Ihr Cloud Shell-Sitzungsterminal:
git clone https://github.com/GoogleCloudDataproc/cloud-dataproc.git
Wechseln Sie zum Verzeichnis
cloud-managed-spark/spark-hbase: Beispielausgabe:cd cloud-managed-spark/spark-hbase
user-name@cloudshell:~/cloud-managed-spark/spark-hbase (project-id)$
Senden Sie den Managed Service for Apache Spark-Job.
Java
- Legen Sie die Komponentenversionen in der Datei
pom.xmlfest.- Auf der Seite mit den Releaseversionen von Managed Service for Apache Spark
2.0.x
sind die Scala-, Spark- und HBase-Komponentenversionen aufgeführt, die mit den neuesten und letzten vier Image-Subminor-Versionen 2.0 installiert wurden.
- Die Subminor-Version Ihres 2.0-Image-Version-Clusters finden Sie, indem Sie in der
Console auf der Seite
Cluster auf den Clusternamen klicken, um die Seite Clusterdetails zu öffnen. Dort ist die
Image-Version des Clusters aufgeführt.Google Cloud
- Die Subminor-Version Ihres 2.0-Image-Version-Clusters finden Sie, indem Sie in der
Console auf der Seite
Cluster auf den Clusternamen klicken, um die Seite Clusterdetails zu öffnen. Dort ist die
Image-Version des Clusters aufgeführt.Google Cloud
- Alternativ können Sie die folgenden Befehle in einem
SSH-Sitzungsterminal
vom Masterknoten Ihres Clusters ausführen, um die Komponentenversionen zu ermitteln:
- Scala-Version prüfen:
scala -version
- Spark-Version prüfen (mit Strg+D beenden):
spark-shell
- HBase-Version prüfen:
hbase version
- Ermitteln Sie die Abhängigkeiten der Spark-, Scala- und HBase-Version
in der Maven
pom.xml: Hinweis:<properties> <scala.version>scala full version (for example, 2.12.14)</scala.version> <scala.main.version>scala main version (for example, 2.12)</scala.main.version> <spark.version>spark version (for example, 3.1.2)</spark.version> <hbase.client.version>hbase version (for example, 2.2.7)</hbase.client.version> <hbase-spark.version>1.0.0(the current Apache HBase Spark Connector version)> </properties>
hbase-spark.versionist die aktuelle Spark HBase-Connector-Version. Ändern Sie diese Versionsnummer nicht.
- Scala-Version prüfen:
- Bearbeiten Sie die Datei
pom.xmlim Cloud Shell-Editor, um die richtigen Scala-, Spark- und HBase-Versionsnummern einzufügen. Klicken Sie nach der Bearbeitung auf Terminal öffnen , um zur Befehlszeile des Cloud Shell-Terminals zurückzukehren.cloudshell edit .
- Wechseln Sie in Cloud Shell zu Java 8. Diese JDK-Version ist erforderlich, um den Code zu erstellen. Sie können alle Plugin-Warnmeldungen ignorieren:
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- Prüfen Sie die Java 8-Installation:
Beispielausgabe:java -version
openjdk version "1.8..."
- Auf der Seite mit den Releaseversionen von Managed Service for Apache Spark
2.0.x
sind die Scala-, Spark- und HBase-Komponentenversionen aufgeführt, die mit den neuesten und letzten vier Image-Subminor-Versionen 2.0 installiert wurden.
- Erstellen Sie die Datei
jar: Die Dateimvn clean package
.jarwird im Unterverzeichnis/targetplatziert, z. B.target/spark-hbase-1.0-SNAPSHOT.jar. Senden Sie den Job.
gcloud dataproc jobs submit spark \ --class=hbase.SparkHBaseMain \ --jars=target/filename.jar \ --region=cluster-region \ --cluster=cluster-name
--jars: Fügen Sie den Namen Ihrer.jar-Datei nach „target/“ und vor „.jar“ ein.- Wenn Sie die HBase-Klassenpfade für den Spark-Treiber und -Executor beim
Erstellen des Clusters nicht festgelegt haben,
müssen Sie sie bei jeder Jobübermittlung festlegen. Fügen Sie dazu das
folgende
‑‑propertiesFlag in den Befehl zum Senden des Jobs ein:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Sehen Sie sich die HBase-Tabellenausgabe in der Ausgabe des Cloud Shell-Sitzungsterminals an:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
Python
Senden Sie den Job.
gcloud dataproc jobs submit pyspark scripts/pyspark-hbase.py \ --region=cluster-region \ --cluster=cluster-name
- Wenn Sie die HBase-Klassenpfade für den Spark-Treiber und -Executor beim
Erstellen des Clusters nicht festgelegt haben,
müssen Sie sie bei jeder Jobübermittlung festlegen. Fügen Sie dazu das
folgende
‑‑propertiesFlag in den Befehl zum Senden des Jobs ein:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
- Wenn Sie die HBase-Klassenpfade für den Spark-Treiber und -Executor beim
Erstellen des Clusters nicht festgelegt haben,
müssen Sie sie bei jeder Jobübermittlung festlegen. Fügen Sie dazu das
folgende
Sehen Sie sich die HBase-Tabellenausgabe in der Ausgabe des Cloud Shell-Sitzungsterminals an:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
HBase-Tabelle scannen
Sie können den Inhalt Ihrer HBase-Tabelle scannen, indem Sie die folgenden Befehle im SSH-Sitzungsterminal des Masterknotens ausführen, das Sie unterConnector-Installation prüfengeöffnet haben:
- Öffnen Sie die HBase-Shell:
hbase shell
- Scannen Sie „my-table“:
Beispielausgabe:scan 'my_table'
ROW COLUMN+CELL key1 column=cf:name, timestamp=1647364013561, value=foo key2 column=cf:name, timestamp=1647364012817, value=bar 2 row(s) Took 0.5009 seconds
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden , um das Projekt zu löschen.
Cluster löschen
- So löschen Sie den Cluster:
gcloud dataproc clusters delete cluster-name \ --region=${REGION}