Dataproc 叢集建立後可加以調整 (亦即「資源調度」),方法是增加或減少叢集的主要或次要 worker 節點數 (又稱水平資源調度)。您隨時都能調度 Dataproc 叢集的資源,即使叢集上有正在執行的工作也沒問題,但無法變更現有叢集的機型 (即「垂直擴充」)。如要垂直擴充,請使用支援的機型建立叢集,然後將工作遷移至新叢集。
您可以調度 Dataproc 叢集的下列資源:
- 增加 worker 數量以提升工作執行速度
- 減少 worker 數量以節省成本 (縮減叢集規模時可選用此功能,避免遺失正在進行中的工作,詳情請參閱「安全停用」)。
- 增加節點數量,以擴充可用的 Hadoop 分散式檔案系統 (HDFS) 儲存空間。
然而,叢集可進行多次資源調度,因此可以在某次增加或縮減規模,並在下一次進行反向的增減調整。
使用資源調度功能
Dataproc 叢集有三種資源調度方式:
- 使用 gcloud CLI 中的
gcloud指令列工具。 - 在 Google Cloud 控制台中編輯叢集設定。
- 使用 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
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] (儲存) 來更新叢集。Dataproc 如何選取需移除的叢集節點
若是以 1.5.83 以上、2.0.57 以上和 2.1.5 以上版本映像檔建立的叢集,Dataproc 在縮減資源時,會優先移除無作用、狀態不良和閒置的節點,然後再移除正在執行的「YARN 應用程式主要執行個體」與「容器」數量最少的節點,以盡量避免因移除節點而影響執行中的 YARN 應用程式。
安全停用
當您縮減叢集資源時,正在進行的工作可能會在完成之前終止。在 Dataproc 1.2 或更新的版本中,可以使用含有安全停用 YARN 節點功能的安全停用機制來結束 worker 正在執行的工作,以免這些工作在 Dataproc 叢集中遭到移除。
安全停用與次要 worker
先占 (次要) 工作站群組會持續佈建或刪除工作站,以達到其預期的規模,即使為叢集調度資源的作業標示為已完成。如果嘗試安全停用次要 worker,會收到大致如下的錯誤訊息:
「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」(次要 worker 節點群組無法在 Dataproc 外部進行修改。若您近期曾建立或更新此叢集,請等待數分鐘後再執行安全停用功能,讓所有次要執行個體加入或離開叢集。預期次要 worker 節點群組規模:x,實際規模:y),
請稍候幾分鐘,然後再重複安全停用要求。
使用安全停用程序
Dataproc 安全停用機制內含安全停用 YARN 節點功能,可以先結束 worker 正在執行的工作,以免這些工作在 Cloud Dataproc 叢集中遭到移除。安全停用功能預設為停用。如要啟用此功能,請在更新叢集時設定一個逾時值,以從叢集移除一或多個 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 以上建立的 Dataproc 叢集上,您可以執行 gcloud dataproc operations cancel 指令或發出 Dataproc API operations.cancel 要求,以取消安全停用縮減資源作業。
取消安全停用縮減資源作業時,請注意下列事項:
作業取消完成後,原本
DECOMMISSIONING狀態的 worker 會重新啟用,狀態變成ACTIVE。如果縮減資源作業包含標籤更新,則更新可能不會生效。
如要驗證取消要求的處理狀態,可以執行 gcloud dataproc operations describe 指令,或發出 Dataproc API operations.get 要求進行確認。如果取消作業成功,內部作業狀態會標示為 CANCELLED。