使用 gcloud CLI 建立叢集

本頁說明如何使用 Google Cloud CLI gcloud 指令列工具建立 Managed Service for Apache Spark 叢集、在叢集中執行 Apache Spark 工作,然後修改叢集中的 worker 數量。

如要瞭解如何使用 APIs 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 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要專案建立者角色 (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 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (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 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要專案建立者角色 (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 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    gcloud services enable dataproc.googleapis.com

必要的角色

您必須具備特定 IAM 角色,才能執行本頁的範例。視機構政策而定,系統可能已授予這些角色。如要查看角色授權,請參閱「是否需要授予角色?」一文。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

使用者角色

如要取得建立 Managed Service for Apache Spark 叢集所需的權限,請要求管理員授予您下列 IAM 角色:

服務帳戶角色

為確保 Compute Engine 預設服務帳戶具備建立 Managed Service for Apache Spark 叢集的必要權限,請要求管理員在專案中,將下列 IAM 角色授予 Compute Engine 預設服務帳戶:

建立叢集

如要建立名為 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 的主要方法,可計算 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.

更新叢集

如要將叢集的 worker 數量變更為 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.

如要將 worker 節點數減至原始值 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
    

後續步驟