Dataproc 叢集設定

在 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**

* Cloud Data Fusion 6.4 以上版本與 支援的 Dataproc 版本相容。除非需要特定 OS 功能,否則建議指定 major.minor 映像檔版本
如要指定 Dataproc 叢集使用的 OS 版本,該 OS 版本必須與上表中 Cloud Data Fusion 支援的 Dataproc 版本相容。

** Cloud Data Fusion 6.1 至 6.6 版與 不支援的 Dataproc 1.3 版相容。

*** 系統偵測到這個圖片版本有 某些問題。不建議在正式環境中使用這個 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

詳情請參閱「叢集大小」。

後續步驟