目标
本教程将介绍如何执行以下操作:
- 创建 Dataproc 集群,并在集群上安装 Apache HBase 和 Apache ZooKeeper
- 使用在 Dataproc 集群的主节点上运行的 HBase shell 创建 HBase 表
- 使用 Cloud Shell 将 Java 或 PySpark Spark 作业提交到 Dataproc 服务,该作业会先将数据写入 HBase 表,然后再从 HBase 表中读取数据
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
准备工作
如果您尚未创建 Google Cloud Platform 项目,请首先创建该项目。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
创建 Dataproc 集群
在 Cloud Shell 会话终端中运行以下命令,以执行以下操作:
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/*'
验证连接器安装
在 Google Cloud 控制台或 Cloud Shell 会话终端中,通过 SSH 连接到 Dataproc 集群主服务器。
验证是否已在主节点上安装 Apache HBase Spark 连接器:
示例输出:ls -l /usr/lib/spark/jars | grep hbase-spark
-rw-r--r-- 1 root root size date time hbase-spark-connector.version.jar
请让 SSH 会话终端保持打开状态,以便:
- 创建 HBase 表
- (Java 用户):在集群的主节点上运行命令,以确定集群上安装的组件的版本
- 运行代码后,扫描 HBase 表
创建 HBase 表
在您在上一步中打开的主节点 SSH 会话终端中,运行本部分列出的命令。
打开 HBase shell:
hbase shell
创建一个包含“cf”列族的 HBase“my-table”:
create 'my_table','cf'
- 如需确认表的创建,请在 Google Cloud 控制台中,点击 Google Cloud 控制台组件网关链接中的 HBase,以打开 Apache HBase 界面。
my-table
列在首页的表部分中。
- 如需确认表的创建,请在 Google Cloud 控制台中,点击 Google Cloud 控制台组件网关链接中的 HBase,以打开 Apache HBase 界面。
查看 Spark 代码
Java
Python
运行代码
打开 Cloud Shell 会话终端。
将 GitHub GoogleCloudDataproc/cloud-dataproc 代码库克隆到您的 Cloud Shell 会话终端:
git clone https://github.com/GoogleCloudDataproc/cloud-dataproc.git
切换到
cloud-dataproc/spark-hbase
目录: 示例输出:cd cloud-dataproc/spark-hbase
user-name@cloudshell:~/cloud-dataproc/spark-hbase (project-id)$
提交 Dataproc 作业。
Java
- 在
pom.xml
文件中设置组件版本。- Dataproc 2.0.x 发布版本页面列出了与最新的映像 2.0 子版本和过去 4 个映像 2.0 子版本一起安装的 Scala、Spark 和 HBase 组件版本。
- 如需查找 2.0 映像版本集群的子次要版本,请点击 Google Cloud 控制台 Clusters(集群)页面上的集群名称,以打开 Cluster details(集群详情)页面,其中列出了集群的Image version(映像版本)。
- 或者,您也可以在集群的主节点的 SSH 会话终端中运行以下命令,以确定组件版本:
- 检查 Scala 版本:
scala -version
- 检查 Spark 版本(按 Control-D 退出):
spark-shell
- 检查 HBase 版本:
hbase version
- 在 Maven
pom.xml
中确定 Spark、Scala 和 HBase 版本依赖项: 注意:<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.version
是当前的 Spark HBase 连接器版本;请勿更改此版本号。
- 检查 Scala 版本:
- 在 Cloud Shell 编辑器中修改
pom.xml
文件,以插入正确的 Scala、Spark 和 HBase 版本号。编辑完成后,点击打开终端以返回 Cloud Shell 终端命令行。cloudshell edit .
- 在 Cloud Shell 中切换到 Java 8。您需要此 JDK 版本才能构建代码(您可以忽略任何插件警告消息):
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- 验证 Java 8 安装:
示例输出:java -version
openjdk version "1.8..."
- Dataproc 2.0.x 发布版本页面列出了与最新的映像 2.0 子版本和过去 4 个映像 2.0 子版本一起安装的 Scala、Spark 和 HBase 组件版本。
- 构建
jar
文件:mvn clean package
.jar
文件放在/target
子目录中(例如target/spark-hbase-1.0-SNAPSHOT.jar
)。 提交作业。
gcloud dataproc jobs submit spark \ --class=hbase.SparkHBaseMain \ --jars=target/filename.jar \ --region=cluster-region \ --cluster=cluster-name
--jars
:将.jar
文件的名称插入“target/”和“.jar”之间。- 如果您在创建集群时未设置 Spark 驱动程序和执行器 HBase 类路径,则必须在每次提交作业时设置它们,方法是在作业提交命令中添加以下
‑‑properties
标志:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
在 Cloud Shell 会话终端输出中查看 HBase 表输出:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
Python
提交作业。
gcloud dataproc jobs submit pyspark scripts/pyspark-hbase.py \ --region=cluster-region \ --cluster=cluster-name
- 如果您在创建集群时未设置 Spark 驱动程序和执行器 HBase 类路径,则必须在每次提交作业时设置它们,方法是在作业提交命令中添加以下
‑‑properties
标志:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
- 如果您在创建集群时未设置 Spark 驱动程序和执行器 HBase 类路径,则必须在每次提交作业时设置它们,方法是在作业提交命令中添加以下
在 Cloud Shell 会话终端输出中查看 HBase 表输出:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
扫描 HBase 表
您可以在验证连接器安装中打开的主节点 SSH 会话终端中,运行以下命令来扫描 HBase 表的内容:
- 打开 HBase shell:
hbase shell
- 扫描“my-table”:
示例输出: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
清理
完成本教程后,您可以清理您创建的资源,让它们停止使用配额,以免产生费用。以下部分介绍如何删除或关闭这些资源。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
如需删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
删除集群
- 如需删除您的集群,请输入以下命令:
gcloud dataproc clusters delete cluster-name \ --region=${REGION}