创建 Hadoop 集群

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

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

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

本页面假定您已熟悉 Hadoop。如需详细了解 Dataproc,请参阅 Dataproc 文档

准备工作

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

  • 创建 Bigtable 实例。请务必记下项目 ID 和 Bigtable 实例 ID。
  • Enable the Cloud Bigtable API, Cloud Bigtable Admin API, Dataproc, and Cloud Storage JSON APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • 验证您的用户账号是否具有包含 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 存储桶

Dataproc 使用 Cloud Storage 存储分区来存储临时文件。为避免文件命名冲突,请为 Dataproc 创建一个新的存储分区。

Cloud Storage 存储分区名称必须在所有存储分区中保持全局唯一。 请选择一个可能还没有被使用过的存储桶名称,例如,将您的 Google Cloud 项目名称加入存储桶名称中。

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

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

创建 Dataproc 集群

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

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 标志设置为较低的值。

测试 Dataproc 集群

设置完 Dataproc 集群后,您可以对该集群进行测试,方法是运行示例 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 作业了。

删除 Dataproc 集群

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

gcloud dataproc clusters delete [DATAPROC_CLUSTER_NAME]

后续步骤