在 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** |
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 映像檔版本」一文。