建立 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. If you recently
created or updated this cluster, wait a few minutes before gracefully
decommissioning to allow all secondary instances to join or leave the cluster.
Expected secondary worker group size: x, actual size: 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
要求。如果取消作業成功,內部作業狀態會標示為「已取消」。