在 Cloud Data Fusion 中,叢集設定是指定義資料處理管道在 Dataproc 上執行 Spark 工作時,如何使用運算資源。本頁面說明叢集設定的主要方法。
預設暫時叢集 (建議)
建議使用預設叢集執行 Cloud Data Fusion 管道。
- Cloud Data Fusion 會自動佈建及管理暫時的 Dataproc 叢集,供每次管道執行作業使用。這個外掛程式會在管道執行開始時建立叢集,並在管道執行完成後刪除叢集。
- 暫時性叢集的優點:
- 簡單易用:您不必手動設定或管理叢集。
- 成本效益:您只需要為管道執行期間使用的資源付費。
如要調整叢集和微調效能,請參閱叢集大小。
靜態叢集 (適用於特定情境)
在下列情況中,您可以使用靜態叢集:
- 長時間執行的管道:對於持續執行或長時間執行的管道,與重複建立及終止暫時性叢集相比,靜態叢集更具成本效益。
- 集中管理叢集:如果貴機構需要集中控管叢集建立和管理政策,可以使用靜態叢集和 Terraform 等工具。
- 叢集建立時間:當為每個管道建立新叢集所需的時間,對您的用途而言過於冗長時。
不過,靜態叢集需要更多手動設定,且您必須自行管理叢集生命週期。
如要使用靜態叢集,請務必在 Dataproc 叢集上設定下列屬性:
dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"
靜態叢集的叢集設定選項
如果您選擇使用靜態叢集,Cloud Data Fusion 會提供下列方面的設定選項:
- 工作站機器類型:指定叢集中工作站節點的虛擬機器類型。這會決定每個工作站可用的 vCPU 和記憶體。
- 工作站數量:定義叢集中的工作站節點初始數量。Dataproc 仍可能會根據工作負載自動調度這個數量。
- 區域:選取叢集的 Google Cloud 區域。位置可能會影響資料區域性和網路效能。
- 其他設定:您可以為靜態叢集設定進階選項,例如搶占設定、網路設定和初始化動作。
最佳做法
為管道建立靜態叢集時,請使用下列設定。
參數 | 說明 |
---|---|
yarn.nodemanager.delete.debug-delay-sec |
保留 YARN 記錄。 建議值: 86400 (相當於一天) |
yarn.nodemanager.pmem-check-enabled |
讓 YARN 檢查實體記憶體限制,並在容器超出實體記憶體時終止容器。 建議值: false |
yarn.nodemanager.vmem-check-enabled |
讓 YARN 檢查虛擬記憶體限制,並在容器超出實體記憶體時終止容器。 建議值: false |
dataproc.scheduler.driver-size-mb |
如果主要節點的記憶體不足以執行驅動程式程序,Dataproc 會根據驅動程式的平均記憶體用量將工作排入佇列。這可能會影響工作並行,但使用記憶體較多的主節點可減輕影響。 建議值: 2048 |
詳情請參閱「對現有的 Dataproc 叢集執行管道」。
重複使用叢集
您可以在執行作業時重複使用 Dataproc 叢集,縮短處理時間。叢集重複使用功能是在類似於連線集區或執行緒集區的模型中實作。執行作業完成後,任何叢集都會在指定時間內保持運作。啟動新執行時,系統會嘗試尋找符合運算設定檔設定的可用閒置叢集。如果存在,系統會使用該叢集,否則會啟動新的叢集。
重複使用叢集的注意事項
- 叢集不會共用。與一般暫時叢集佈建模型類似,叢集一次只能執行一個管道。只有在叢集閒置時,系統才會重複使用。
- 如果為所有執行作業啟用叢集重複使用功能,系統會視需要建立處理所有執行作業所需的叢集數量。與暫時性 Dataproc 佈建器類似,您無法直接控制建立的叢集數量。您仍可使用 Google Cloud 配額 管理資源。舉例來說,如果您執行 100 次執行作業,最多可平行執行 7 次,則在特定時間點最多會有 7 個叢集。
只要不同管道使用相同的設定檔並共用相同的設定檔設定,就會重複使用叢集。如果使用設定檔自訂功能,系統仍會重複使用叢集,但前提是自訂項目完全相同,包括所有叢集設定 (例如叢集標籤)。
啟用叢集重複使用功能後,主要有兩項成本考量:
- 叢集啟動和初始化作業使用的資源較少。
- 在管道執行期間和最後一次執行管道後,叢集會閒置,但仍會使用更多資源。
雖然很難預測叢集重複使用帶來的成本效益,但您可以採用策略,盡可能節省費用。這項策略的目標是找出鏈結管道的重要路徑,並為這個重要路徑啟用叢集重複使用功能。這樣可確保叢集立即重複使用,不會浪費閒置時間,並充分發揮效能。
啟用叢集重複使用功能
在已部署管道設定的「運算設定」部分,或建立新的運算設定檔時:
- 啟用「Skip Cluster Delete」(略過叢集刪除)。
- 叢集等待下一個管道重複使用叢集的時間上限。預設的閒置時間上限為 30 分鐘。就「最長閒置時間」而言,請考量成本與叢集可用性 (可重複使用) 的關係。閒置時間上限的值越高,閒置的叢集就越多,隨時可執行作業。
疑難排解:版本相容性
問題:Cloud Data Fusion 環境版本可能與 Dataproc 叢集版本不相容。
建議:升級至最新版 Cloud Data Fusion,並使用支援的 Dataproc 版本。
舊版 Cloud Data Fusion 僅相容於不支援的 Dataproc 版本。Dataproc 對使用這些版本建立的叢集並不提供更新和支援。雖然您可以繼續執行使用不支援版本建立的叢集,但我們仍建議您改用使用支援版本建立的叢集。
Cloud Data Fusion 版本 | Dataproc 版本 |
---|---|
6.11.1 | 2.3 |
6.10.1.1 | 2.2***、2.1、2.0 * |
6.10 | 2.1、2.0 * |
6.9 | 2.1、2.0、1.5 * |
6.7-6.8 | 2.0、1.5 * |
6.4-6.6 | 2.0 *、1.3 ** |
6.1-6.3 | 1.3** |
major.minor
映像檔版本。如要指定 Dataproc 叢集使用的 OS 版本,該 OS 版本必須與上表中 Cloud Data Fusion 支援的 Dataproc 版本相容。
疑難排解:容器以非零的結束代碼 3 結束
問題:系統未使用自動調度資源政策,且靜態 Dataproc 叢集遇到記憶體壓力,導致記錄中出現記憶體不足例外狀況:Container exited with a non-zero
exit code 3
。
建議:增加執行器記憶體。
在管道中加入 task.executor.system.resources.memory
執行階段引數,即可增加記憶體。以下範例的執行階段引數會將記憶體設為 4096 MB:
"task.executor.system.resources.memory": 4096
詳情請參閱「叢集大小」。
後續步驟
- 請參閱「如何變更 Dataproc 映像檔版本」。