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 會提供下列方面的設定選項:

  • 工作站機器類型:指定叢集中工作站節點的虛擬機器類型。這會決定每個 worker 可用的 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 個叢集。
  • 只要管道使用相同的設定檔並共用相同的設定檔設定,叢集就會在不同管道之間重複使用。如果您使用設定檔自訂功能,叢集仍會重複使用,但前提是自訂項目必須完全相同,包括所有叢集設定 (例如叢集標籤)。

  • 啟用叢集重複使用功能後,您需要考量兩項主要費用:

    • 叢集啟動和初始化作業所使用的資源較少。
    • 叢集會在管道執行期間和最後一次管道執行後,使用更多資源。

雖然很難預測叢集重複使用對成本的影響,但您可以採用某種策略來盡可能節省成本。這項策略是針對鏈結管道找出關鍵路徑,並為此關鍵路徑啟用叢集重複使用功能。這麼做可確保叢集能立即重複使用,不會浪費閒置時間,並獲得最佳效能優勢。

啟用叢集重複使用功能

在已部署管道設定的「運算設定」部分,或建立新的運算設定檔時:

  • 啟用「略過叢集刪除」
  • 叢集會等待下一個管道重複使用,直到達到最大閒置時間為止。預設的閒置時間上限為 30 分鐘。針對閒置時間上限,請考量費用與可重複使用的叢集可用性。閒置時間上限值越高,閒置的叢集就越多,可隨時執行。

疑難排解:版本相容性

問題:Cloud Data Fusion 環境的版本可能與 Dataproc 叢集的版本不相容。

建議:升級至最新的 Cloud Data Fusion 版本,並使用其中一個支援的 Dataproc 版本

早期版本的 Cloud Data Fusion 僅與不支援的 Dataproc 版本相容。Dataproc 對使用這些版本建立的叢集並不提供更新和支援。雖然您可以繼續執行使用不支援版本建立的叢集,但我們建議您改用使用支援版本建立的叢集。

Cloud Data Fusion 版本 Dataproc 版本
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

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

後續步驟