使用 gcloud CLI 创建集群

本页面介绍了如何使用 Google Cloud CLI gcloud 命令行工具创建 Managed Service for Apache Spark 集群,在该集群中运行 Apache Spark 作业,然后修改该集群中的工作器数量。

如需了解如何使用 API Explorer 快速入门、使用Google Cloud 控制台创建集群中的Google Cloud 控制台以及使用客户端库创建集群中的客户端库执行相同或类似的任务,请参阅相关文档。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目。

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色。
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      将 PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      将 PROJECT_ID 替换为您的 Google Cloud 项目名称。

  6. 验证您是否拥有完成本指南所需的权限。

  7. 验证您的 Google Cloud 项目是否已启用结算功能。

  8. 启用 Dataproc API(如果尚未启用):

    启用 API 所需的角色

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

    gcloud services enable dataproc.googleapis.com
  9. 安装 Google Cloud CLI。

  10. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 创建或选择 Google Cloud 项目。

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色。
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      将 PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      将 PROJECT_ID 替换为您的 Google Cloud 项目名称。

  13. 验证您是否拥有完成本指南所需的权限。

  14. 验证您的 Google Cloud 项目是否已启用结算功能。

  15. 启用 Dataproc API(如果尚未启用):

    启用 API 所需的角色

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

    gcloud services enable dataproc.googleapis.com

所需的角色

您需要拥有某些 IAM 角色才能运行此页面上的示例。这些角色可能已获授予,具体取决于组织政策。如需查看角色授予情况,请参阅您是否需要授予角色?。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

用户角色

如需获得创建 Managed Service for Apache Spark 集群所需的权限,请让管理员向您授予以下 IAM 角色:

服务账号角色

为确保 Compute Engine 默认服务账号具有创建 Managed Service for Apache Spark 集群所需的权限,请让您的管理员为 Compute Engine 默认服务账号授予项目的以下 IAM 角色:

创建集群

如需创建名为 example-cluster 的集群,请运行以下 gcloud Managed Service for Apache Spark clusters create 命令。

。
gcloud dataproc clusters create example-cluster --region=REGION

替换以下内容:

REGION:指定集群所在的区域。

提交作业

如需提交计算 pi 的粗略值的示例 Spark 作业,请运行以下 gcloud Managed Service for Apache Spark jobs submit spark 命令:

gcloud dataproc jobs submit spark --cluster example-cluster \
    --region=REGION \
    --class org.apache.spark.examples.SparkPi \
    --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000

注意:

替换以下内容:

REGION:指定集群区域。

  • 作业在 example-cluster 上运行。
  • class 包含 SparkPi 的 main 方法,该方法用于计算 pi 应用的近似值。
  • 该 jar 文件包含作业代码。注意:file:///usr/lib/spark/examples/jars/spark-examples.jar 是预安装在集群上的示例 jar 文件。对于自定义作业,请在 Cloud Storage 中指定您的 jar 文件(请参阅提交作业)。

  • 1000 是作业参数。它指定了作业为计算 pi 的值而执行的任务(迭代)次数。

该作业的运行过程和最终输出会显示在终端窗口中:

Waiting for job output...
...
Pi is roughly 3.14118528
...
Job finished successfully.

更新集群

如需将集群中的工作器数量更改为 5,请运行以下命令:

gcloud dataproc clusters update example-cluster \
    --region=REGION \
    --num-workers 5

命令输出会显示集群详细信息:

workerConfig:
...
  instanceNames:
  -   example-cluster-w-0
  -   example-cluster-w-1
  -   example-cluster-w-2
  -   example-cluster-w-3
  -   example-cluster-w-4
  numInstances: 5
statusHistory:
...
-   detail: Add 3 workers.

如需将工作器节点的数量减少为原始值 2,请运行以下命令:

gcloud dataproc clusters update example-cluster \
    --region=REGION \
    --num-workers 2

清理

为避免因本面页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 如需删除 example-cluster,请运行 clusters delete 命令:
    gcloud dataproc clusters delete example-cluster \
        --region=REGION
    

后续步骤