調度叢集資源

建立 Managed Service for Apache Spark 叢集後,您可以增加或減少叢集中的主要或次要工作站節點數 (又稱水平資源調度),藉此調整叢集 (為叢集進行資源調度)。您隨時都能調度 Managed Service for Apache Spark 叢集的資源,即使叢集上有正在執行的工作也沒問題。但無法變更現有叢集的機型 (即「垂直擴充」)。如要垂直擴充,請使用支援的機型建立叢集,然後將工作遷移至新叢集。

您可以調度 Managed Service for Apache Spark 叢集的下列資源:

  1. 增加 worker 數量以提升工作執行速度
  2. 減少 worker 數量以節省成本 (縮減叢集規模時可選用此功能,避免遺失正在進行中的工作,詳情請參閱「安全停用」)。
  3. 增加節點數量,以擴充可用的 Hadoop 分散式檔案系統 (HDFS) 儲存空間。

然而,叢集可進行多次資源調度,因此可以在某次增加或縮減規模,並在下一次進行反向的增減調整。

使用資源調度功能

您可以透過三種方式調整 Managed Service for Apache Spark 叢集的規模:

  1. 使用 gcloud CLI 中的 gcloud 指令列工具。
  2. Google Cloud 控制台中編輯叢集設定。
  3. 使用 REST API

新增至叢集的工作站將會使用與現有工作站相同的機型。例如,如果叢集中的工作站是使用 n1-standard-8 機型建立的,那麼新的工作站也會使用 n1-standard-8 機型。

您可以調整主要 worker 及/或次要 (先占) worker 的數量。舉例來說,如果您只調整了先占 worker 的數量,主要 worker 的數量會維持不變。

gcloud

如要使用 gcloud dataproc clusters update 來調度叢集資源,請執行下列指令:
gcloud dataproc clusters update cluster-name \
    --region=region \
    [--num-workers and/or --num-secondary-workers]=new-number-of-workers
其中 cluster-name 是要更新的叢集名稱,new-number-of-workers 則是主要和/或次要 worker 節點的更新數量。例如,如果要替名為「dataproc-1」的叢集調度資源,讓它使用五個主要 worker 節點,請執行以下指令。
gcloud dataproc clusters update dataproc-1 \
    --region=region \
    --num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
  masterDiskConfiguration:
    bootDiskSizeGb: 500
  masterName: dataproc-1-m
  numWorkers: 5
  ...
  workers:
  - my-test-cluster-w-0
  - my-test-cluster-w-1
  - my-test-cluster-w-2
  - my-test-cluster-w-3
  - my-test-cluster-w-4
...

REST API

請參閱 clusters.patch 的說明。

範例

PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
  "config": {
    "workerConfig": {
      "numInstances": 4
    },
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  },
  "labels": null
}

控制台

建立叢集之後,您可以調度叢集的資源,方法是前往Google Cloud 控制台的「Clusters」(叢集) 頁面,然後開啟該叢集的「Cluster details」(叢集詳細資料) 頁面,再按一下「Configuration」(設定) 分頁上的「Edit」(編輯) 按鈕。 為「Worker nodes」(worker 節點) 和/或「Preemptible worker nodes」(先占 worker 節點) 數量輸入新的值 (在下方的螢幕截圖中,數量分別更新為「5」和「2」)。 請按一下「Save」(儲存) 來更新叢集。

Managed Service for Apache Spark 如何選取要移除的叢集節點

在以映像檔版本 1.5.83+2.0.57+2.1.5+建立的叢集上,縮減叢集時,Managed Service for Apache Spark 會先移除閒置、不健全和閒置的節點,然後移除執行最少 YARN 應用程式主機和執行中容器的節點,盡量減少節點移除作業對執行中 YARN 應用程式的影響。

安全停用

當您縮減叢集資源時,正在進行的工作可能會在完成之前終止。如果您使用的是 Managed Service for Apache Spark 1.2 或更新的版本,可以使用含有安全停用 YARN 節點功能的安全停用機制來結束 worker 正在執行的工作,以免這些工作在 Managed Service for Apache Spark 叢集中遭到移除。

安全停用與次要 worker

先占 (次要) 工作站群組會持續佈建或刪除工作站,以達到其預期的規模,即使為叢集調度資源的作業標示為已完成。如果您嘗試安全停用次要工作站,將會收到類似以下的錯誤訊息:

「Secondary worker group cannot be modified outside of Managed Service for Apache Spark. 如果您最近才建立或更新這個叢集,請先等候幾分鐘,待所有次要執行個體加入或離開叢集後,再正常終止叢集。 Expected secondary worker group size: x, actual size: y
」(次要工作站群組無法在 Cloud Dataproc 以外的地方修改。如果您是最近才建立或更新這個叢集,請稍候幾分鐘,讓安全停用允許所有次要執行個體加入或離開叢集。預期的次要工作站群組大小:x;實際大小:y)

請稍候幾分鐘,然後再重複安全停用要求。

使用安全停用程序

Managed Service for Apache Spark 安全停用機制內含安全停用 YARN 節點功能,可以先結束 worker 正在執行的工作,以免這些工作在 Cloud Managed Service for Apache Spark 叢集中遭到移除。安全停用功能預設為停用。如要啟用此功能,請在更新叢集時設定一個逾時值,以從叢集移除一或多個 worker。

gcloud

若要更新叢集以移除一或多個 worker,請使用 gcloud dataproc clusters update 指令並搭配 --graceful-decommission-timeout 旗標。逾時 (字串) 值可以是「0s」(預設值;強制非安全停用) 或相對於目前時間的正時間值 (例如「3s」)。最大時間值是 1 天。
gcloud dataproc clusters update cluster-name \
    --region=region \
    --graceful-decommission-timeout="timeout-value" \
    [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \
    ... other args ...

REST API

請參閱 clusters.patch.gracefulDecommissionTimeout 的說明。逾時 (字串) 值可以是「0」(預設值;強制非安全停用) 或單位為秒的時間值 (例如「3s」)。最大時間值是 1 天。

控制台

建立叢集之後,可選擇啟用該叢集的安全停用功能,方法是前往Google Cloud 控制台的「Clusters」(叢集) 頁面,然後開啟該叢集的「Cluster details」(叢集詳細資料) 頁面,再按一下「Configuration」(設定) 分頁上的「Edit」(編輯) 按鈕。 在「Graceful Decommissioning」(安全停用) 部分,選取「Use graceful decommissioning」(使用安全停用),然後選取逾時值。 請按一下「Save」(儲存) 來更新叢集。

取消安全停用縮減資源作業

在以映像檔版本 2.0.57+2.1.5+建立的 Managed Service for Apache Spark 叢集上,您可以執行 gcloud dataproc operations cancel 指令或發出 Managed Service for Apache Spark API operations.cancel 要求,以取消安全停用縮減資源作業。

取消安全停用縮減資源作業時,請注意下列事項:

  • 作業取消完成後,原本 DECOMMISSIONING 狀態的 worker 會重新啟用,狀態變成 ACTIVE

  • 如果縮減資源作業包含標籤更新,則更新可能不會生效。

如要驗證取消要求的處理狀態,可以執行 gcloud dataproc operations describe 指令,或發出 Managed Service for Apache Spark API operations.get 要求進行確認。如果取消作業成功,內部作業狀態會標示為 CANCELLED