创建 Hadoop 集群

您可以使用 Managed Service for Apache Spark 创建一个或多个 Compute Engine 实例,以便连接到 Bigtable 实例并运行 Hadoop 作业。本页面介绍了如何使用 Managed Service for Apache Spark 来自动完成以下任务:

  • 安装 Hadoop 和 Java 版 HBase 客户端
  • 配置 Hadoop 和 Bigtable
  • 为 Bigtable 设置正确的授权范围

创建 Managed Service for Apache Spark 集群后,您可以使用该集群来运行 Hadoop 作业,以便从 Bigtable 读取数据以及将数据写入 Bigtable。

本页面假定您已熟悉 Hadoop。如需详细了解 Managed Service for Apache Spark,请参阅 Managed Service for Apache Spark 文档

准备工作

开始前,您需要完成以下任务:

  • 创建 Bigtable 实例。请务必记下项目 ID 和 Bigtable 实例 ID。
  • 启用 Cloud Bigtable API、Cloud Bigtable Admin API、Managed Service for Apache Spark 和 Cloud Storage JSON API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    启用 API

  • 验证您的用户账号是否具有包含权限 storage.objects.get的角色。

    在 Google Cloud 控制台中打开 IAM 页面。

    打开 IAM 页面

  • 安装 Google Cloud CLI。如需了解详情,请参阅 gcloud CLI 设置说明
  • 安装 Apache Maven 以用于运行示例 Hadoop 作业。

    在 Debian GNU/Linux 或 Ubuntu 上,运行以下命令:

    sudo apt-get install maven

    在 RedHat Enterprise Linux 或 CentOS 上,运行以下命令:

    sudo yum install maven

    在 macOS 上,安装 Homebrew,然后运行以下命令:

    brew install maven
  • 克隆 GitHub 代码库 GoogleCloudPlatform/cloud-bigtable-examples,其中包含使用 Bigtable 的 Hadoop 作业示例:
    git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-examples.git

创建 Cloud Storage 存储桶

Managed Service for Apache Spark 使用 Cloud Storage 存储桶来存储 临时文件。为避免文件命名冲突,请为 Managed Service for Apache Spark 创建一个新的存储桶。

Cloud Storage 存储桶名称必须在所有存储分区中保持全局唯一。 选择一个可能可用的存储桶名称,例如包含项目名称的名称。 Google Cloud

选择名称后,请使用以下命令创建新的存储桶,并将方括号中的值替换为适当的值:

gcloud storage buckets create gs://[BUCKET_NAME] --project=[PROJECT_ID]

创建 Managed Service for Apache Spark 集群

运行以下命令来创建一个包含四个工作器节点的 Managed Service for Apache Spark 集群,并将方括号中的值替换为适当的值:

gcloud dataproc clusters create [DATAPROC_CLUSTER_NAME] --bucket [BUCKET_NAME] \
    --region [region] --num-workers 4 --master-machine-type n1-standard-4 \
    --worker-machine-type n1-standard-4

请参阅 gcloud dataproc clusters create 文档 ,了解您可以配置的其他设置。如果您收到包含 文本 Insufficient 'CPUS' quota的错误消息,请尝试将 --num-workers 标志设置为较低的值。

测试 Managed Service for Apache Spark 集群

设置完 Managed Service for Apache Spark 集群后,您可以对该集群进行测试 ,方法是运行示例 Hadoop 作业来统计某一字词在文本文件中出现的次数 。此示例作业使用 Bigtable 来存储操作结果。您可以使用此示例作业作为参考来设置自己的 Hadoop 作业。

运行示例 Hadoop 作业

  1. 在您克隆了 GitHub 代码库的目录中,切换到 java/dataproc-wordcount 目录。
  2. 运行以下命令来构建项目,并将方括号中的值替换为适当的值:

    mvn clean package -Dbigtable.projectID=[PROJECT_ID] \
        -Dbigtable.instanceID=[BIGTABLE_INSTANCE_ID]
    
  3. 运行以下命令来启动 Hadoop 作业,并将方括号中的值替换为适当的值:

    ./cluster.sh start [DATAPROC_CLUSTER_NAME]
    

该作业完成后,系统将显示输出表的名称,其格式为 WordCount 一词后跟一个连字符和一个专属编号:

Output table is: WordCount-1234567890

验证 Hadoop 作业的结果

(可选)运行 Hadoop 作业后,您可以使用 cbt CLI 来验证该作业是否已成功运行:

  1. 在 Cloud Shell 中打开一个终端窗口。

    在 Cloud Shell 中打开

  2. 安装 cbt CLI :
        gcloud components update
        gcloud components install cbt
  3. 扫描输出表以查看 Hadoop 作业的结果,并将 [TABLE_NAME] 替换为输出表的名称:
        cbt -instance [BIGTABLE_INSTANCE_ID] read [TABLE_NAME]
      

确认集群已正确设置后,您现在就可以使用该集群来运行自己的 Hadoop 作业了。

删除 Managed Service for Apache Spark 集群

使用完 Managed Service for Apache Spark 集群后,您可以运行以下命令来关停并删除该集群,并将 [DATAPROC_CLUSTER_NAME] 替换为您的 Managed Service for Apache Spark 集群的名称:

gcloud dataproc clusters delete [DATAPROC_CLUSTER_NAME]

后续步骤