建立 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」(編輯) 按鈕。
為「Worker nodes」(工作站節點) 和/或「Preemptible worker nodes」(先佔工作站節點) 數量輸入新的值 (在下方的螢幕截圖中,數量分別更新為「5」和「2」)。
按一下「儲存」,更新叢集。
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」(編輯) 按鈕。
在「Graceful Decommissioning」(安全停用) 部分,選取「Use graceful decommissioning」(使用安全停用),然後選取逾時值。
按一下「儲存」,更新叢集。
取消安全停用縮減作業
在以映像檔版本 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。