Managed Service for Apache Spark 叢集設定

在 Cloud Data Fusion 中,叢集設定是指定義資料處理管道在 Managed Service for Apache Spark 上執行 Spark 工作時,如何運用運算資源。本頁面說明叢集設定的主要方法。

預設暫時叢集 (建議)

建議使用預設叢集執行 Cloud Data Fusion 管道。

  • Cloud Data Fusion 會自動佈建及管理暫時的 Managed Service for Apache Spark 叢集,供每個管道執行作業使用。這個外掛程式會在管道執行作業開始時建立叢集,並在管道執行作業完成後刪除叢集。
  • 臨時叢集的優點:
    • 簡單易用:您不必手動設定或管理叢集。
    • 成本效益:您只需為管道執行期間使用的資源付費。

如要調整叢集和微調效能,請參閱叢集大小

靜態叢集 (適用於特定情境)

在下列情況中,您可以使用靜態叢集:

  • 長時間執行的管道:對於持續或長時間執行的管道,相較於重複建立及終止暫時性叢集,靜態叢集更具成本效益。
  • 集中管理叢集:如果貴機構需要集中控管叢集建立和管理政策,可以搭配 Terraform 等工具使用靜態叢集。
  • 叢集建立時間:當為每個管道建立新叢集所需的時間,對您的用途而言過於冗長時。

不過,靜態叢集需要更多手動設定,且您必須自行管理叢集生命週期。

如要使用靜態叢集,您必須在 Managed Service for Apache Spark 叢集上設定下列屬性

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

靜態叢集的叢集設定選項

如果您選擇使用靜態叢集,Cloud Data Fusion 會提供下列方面的設定選項:

  • Worker 機型:指定叢集中 worker 節點的虛擬機器類型。這會決定每個工作站可用的 vCPU 和記憶體。
  • 工作站數量:定義叢集中的工作站節點初始數量。Managed Service for Apache Spark 仍可能會根據工作負載自動調度這個數量。
  • 區域:選取叢集的 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 如果主要節點的記憶體不足以執行驅動程式程序,Managed Service for Apache Spark 會根據驅動程式的平均記憶體用量,將工作排入佇列。這可能會影響工作並行,但使用記憶體較多的主要節點可減輕影響。
建議值:2048

詳情請參閱「針對現有的 Managed Service for Apache Spark 叢集執行管道」。

重複使用叢集

您可以在執行作業時重複使用 Managed Service for Apache Spark 叢集,縮短處理時間。叢集重複使用功能是在類似於連線集區或執行緒集區的模型中實作。執行作業完成後,任何叢集都會在指定時間內保持運作。啟動新執行時,系統會嘗試尋找符合運算設定檔設定的可用閒置叢集。如果有的話,系統會使用該叢集,否則會啟動新的叢集。

重複使用叢集的注意事項

  • 叢集不會共用。與一般暫時叢集佈建模型類似,叢集一次只會執行一個管道。只有在叢集閒置時,系統才會重複使用
  • 如果您為所有執行作業啟用叢集重複使用功能,系統會視需要建立處理所有執行作業所需的叢集數量。與暫時性 Managed Service for Apache Spark 佈建工具類似,您無法直接控制建立的叢集數量。您仍可使用 Google Cloud 配額 管理資源。舉例來說,如果您執行 100 次執行作業,且最多可平行執行 7 次,則在特定時間點最多會有 7 個叢集。
  • 只要不同管道使用相同的設定檔並共用相同的設定檔設定,這些管道就會重複使用叢集。如果使用設定檔自訂功能,系統仍會重複使用叢集,但前提是自訂項目完全相同,包括所有叢集設定 (例如叢集標籤)。

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

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

雖然很難預測叢集重複使用對成本的影響,但您可以採用策略,盡可能節省費用。這項策略的目標是找出鏈結管道的重要路徑,並為這個重要路徑啟用叢集重複使用功能。這樣可確保叢集立即重複使用,不會浪費閒置時間,並發揮最大效能效益。

啟用叢集重複使用功能

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

  • 啟用「略過叢集刪除」
  • 閒置時間上限是叢集等待下一個管道重複使用叢集的時間。預設的閒置時間上限為 30 分鐘。至於「最長閒置時間」,請考量費用與叢集可用性 (可重複使用) 的關係。閒置時間上限的值越高,閒置的叢集就越多,隨時可執行作業。

疑難排解:版本相容性

問題:Cloud Data Fusion 環境版本可能與 Managed Service for Apache Spark 叢集版本不相容。

建議:升級至最新版 Cloud Data Fusion,並使用支援的 Managed Service for Apache Spark 版本

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

Cloud Data Fusion 版本 Managed Service for Apache Spark 版本
6.11.1 2.3、2.2***、2.1
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 以上版本與 支援的 Managed Service for Apache Spark 版本相容。除非需要特定 OS 功能,否則建議指定 major.minor 映像檔版本
如要指定 Managed Service for Apache Spark 叢集使用的 OS 版本,OS 版本必須與上表中 Cloud Data Fusion 支援的 Managed Service for Apache Spark 版本相容。

** Cloud Data Fusion 6.1 至 6.6 版與 不受支援的 Managed Service for Apache Spark 1.3 版相容。

*** 系統偵測到這個圖片版本有 問題。不建議在正式環境中使用這個 Managed Service for Apache Spark 映像檔版本。

疑難排解:容器以非零的結束代碼 3 結束

問題:系統未使用自動調度資源政策,且靜態 Managed Service for Apache Spark 叢集遇到記憶體壓力,導致記錄中出現記憶體不足例外狀況:Container exited with a non-zero exit code 3

建議:增加執行器記憶體。

在管道中加入 task.executor.system.resources.memory 執行階段引數,即可增加記憶體。以下範例的執行階段引數會將記憶體設為 4096 MB:

"task.executor.system.resources.memory": 4096

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

後續步驟