建立 Dataproc 叢集後,您可藉由增加或減少叢集中主要或次要工作站節點數的方式 (水平擴展),調整叢集 (為叢集進行資源調度)。您隨時都能為 Dataproc 叢集進行資源調度,即使叢集上有正在執行的工作也沒問題。您無法變更現有叢集的機器類型 (垂直擴充)。如要垂直擴充,請使用支援的機器類型建立叢集,然後將工作遷移至新叢集。
您可以為下列項目調度 Dataproc 叢集:
- 增加工作站數量,以提升工作執行速度。
- 減少工作站數量,以節省成本 (請參閱安全停用一節,讓您在縮減叢集規模時,能將該功能列為避免失去進行中工作的選項)。
- 增加節點數量,以擴充可用的 Hadoop 分散式檔案系統 (HDFS) 儲存空間。
您可以為叢集進行多次資源調度,因此您可能這次想要擴充/縮減叢集的規模,下次又想要縮減/擴充叢集的規模。
使用縮放功能
能為 Dataproc 叢集進行資源調度的方式有三種:
- 使用 gcloud CLI 中的
gcloud
指令列工具。 - 在 Google Cloud 控制台中編輯叢集設定。
- 使用 REST API。
新增至叢集的工作站將會使用與現有工作站相同的機器類型。舉例來說,如果叢集中的工作站是使用 n1-standard-8
機器類型建立的,那麼新的工作站也會使用 n1-standard-8
機器類型。
您可以調整主要工作站及/或次要 (先佔) 工作站的數量。舉例來說,如果您只調整了先佔工作站的數量,主要工作站的數量會維持不變。
gcloud
如要使用gcloud dataproc clusters update
調整叢集大小,請執行下列指令:gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
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」(編輯) 按鈕。

Dataproc 如何選取要移除的叢集節點
如果叢集是使用映像檔版本 1.5.83+、2.0.57+和 2.1.5+建立,當縮減叢集時,Dataproc 會先移除閒置、不健全和閒置的節點,然後移除執行最少 YARN 應用程式主機和執行中容器的節點,盡量減少節點移除作業對執行中 YARN 應用程式的影響。
安全停用
當您縮減叢集資源時,正在進行的工作可能會在完成之前停止。如果您使用的是 Dataproc 1.2 或更新的版本,可以使用包含 YARN 節點安全停用的安全停用功能,完成工作站上執行中的工作,避免讓 Cloud Dataproc 叢集中的這些工作遭到移除。
安全停用與次要工作站
先佔 (次要) 工作站群組會持續佈建或刪除工作站,以達到其預期的規模,即使為叢集調度資源的作業標示為已完成。如果您嘗試安全停用次要工作站,將會收到類似以下的錯誤訊息:
「Secondary
worker group cannot be modified outside of Dataproc. 如果您最近才建立或更新這個叢集,請稍候幾分鐘再正常停用,讓所有次要執行個體加入或離開叢集。預期的次要工作站群組大小:x;實際大小:y
請稍候幾分鐘,然後再重複安全停用要求。
使用安全停用程序
Dataproc 安全停用內含的 YARN 節點安全停用功能可完成工作站上正在進行的工作,以免這些工作從 Cloud Dataproc 叢集移除。安全停用功能預設為停用。如要啟用此功能,請在更新叢集時設定一個逾時值,以從叢集移除一或多個工作站。
gcloud
當您更新叢集來移除一或多個工作站時,請使用 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」(編輯) 按鈕。

取消安全停用縮減作業
在以映像檔版本 2.0.57+或 2.1.5+建立的 Dataproc 叢集上,您可以執行 gcloud dataproc operations cancel
指令,或發出 Dataproc API operations.cancel
要求,取消正常終止縮減作業。
取消安全停用縮減作業時:
作業取消完成後,
DECOMMISSIONING
狀態的工作站會重新委派,並變成ACTIVE
。如果縮減作業包含標籤更新,更新可能不會生效。
如要驗證取消要求狀態,可以執行 gcloud dataproc operations describe
指令,或發出 Dataproc API operations.get
要求。如果取消作業成功,內部作業狀態會標示為 CANCELLED
。