叢集大小

Cloud Data Fusion 預設會使用 Autoscale 做為運算設定檔。要預估工作負載的最佳叢集工作站 (節點) 數量相當困難,而整個管道採用單一叢集大小通常也不理想。Dataproc 自動調度資源機制可讓您以自動化的模式管理叢集資源,進而自動新增及移除叢集工作站 VM。詳情請參閱「自動調度資源

在「Compute config」頁面上,您可以看到設定檔清單,其中有一個「Total cores」欄,列出設定檔可擴充至的最大 vCPU 數量,例如 Up to 84

如果您想使用 Dataproc Compute 設定檔,可以根據管道大小管理叢集大小。

主要節點

主節點會根據叢集中執行的管道或其他應用程式數量,使用相應的資源。如果您要在暫時叢集中執行管道,請為主節點使用 2 個 CPU 和 8 GB 記憶體。如果您使用的是永久叢集,可能需要較大的主節點,才能跟上工作流程。如要瞭解是否需要較大的主節點,您可以監控節點的記憶體和 CPU 用量。建議您為 worker 節點配置至少 2 個 CPU 和 8 GB 記憶體。如果您已將管道設為使用較大量的記憶體,則必須使用較大的 worker。

為盡可能縮短執行時間,請確保叢集有足夠的節點,以便盡可能進行平行處理。

工作站

以下各節說明如何為 worker 節點調整大小。

CPU 與記憶體

建議您為 worker 節點配置至少 2 個 CPU 和 8 GB 記憶體。如果您將管道設為使用較大量的記憶體,請使用較大的 worker。舉例來說,如果工作站節點有 4 個 CPU 和 15 GB,每個工作站都會有 4 個 CPU 和 12 GB 可用來執行 YARN 容器。如果管道已設定為執行 1 個 CPU、8 GB 執行工具,YARN 就無法在每個 worker 節點上執行多個容器。每個 worker 節點都會額外使用 3 個 CPU 和 4 GB 記憶體,但這些資源無法用於執行任何作業,因此會浪費。為充分利用叢集的資源,YARN 記憶體和 CPU 應為每個 Spark 執行工具所需數量的整數倍。您可以查看 YARN 中的 yarn.nodemanager.resource.memory-mb 屬性,瞭解每個 worker 為 YARN 保留了多少記憶體。

如果您使用 Dataproc,YARN 容器可用的記憶體大約是 VM 記憶體的 75%。系統也會根據工作站 VM 的大小調整 YARN 容器的大小下限。下表列出一些常見的 worker 大小及其對應的 YARN 設定。

worker CPU 工作站記憶體 (GB) YARN 節點記憶體 (GB) YARN 最小配置記憶體 (MB)
1 4 3 256
2 8 6 512
4 16 12 1024
8 32 24 1024
16 64 51 1024

請注意,Spark 要求的記憶體會比管道設定的執行緒記憶體多,而 YARN 會將要求的數量四捨五入。舉例來說,假設您已將執行緒記憶體設為 2048 MB,但未提供 spark.yarn.executor.memoryOverhead 的值,這表示系統會使用預設的 384 MB。這表示 Spark 會為每個執行工具要求 2048 MB + 384 MB,YARN 會將這個值四捨五入,使其成為 YARN 最低分配量的整數倍數。在 8 GB 工作站節點上執行時,由於 YARN 的最低分配量為 512 MB,因此會進位至 2.5 GB。這表示每個 worker 都能執行兩個容器,並使用所有可用的 CPU,但會保留 1 GB 的 YARN 記憶體 (6 GB - 2.5 GB - 2.5 GB) 未使用。這表示 worker 節點的大小實際上可以縮小一點,或是執行緒可以獲得更多一點的記憶體。在 16 GB 工作節點上執行時,2048 MB + 1024 MB 會四捨五入為 3 GB,因為 YARN 的最小配置量為 1024 MB。也就是說,每個工作站節點都能執行四個容器,並使用所有 CPU 和 YARN 記憶體。

為協助您瞭解相關背景,下表列出一些常見執行緒大小的建議工作者大小。

執行緒 CPU 執行緒記憶體 (MB) worker CPU Worker 記憶體 ( GB)
1 2048 4 15
1 3072 4 21
1 4096 4 26
2 8192 4 26

舉例來說,26 GB 的工作站節點可轉換為 20 GB 的記憶體,可用於執行 YARN 容器。將執行緒記憶體設為 4 GB 時,系統會額外增加 1 GB 的額外負載,也就是每個執行緒有 5 GB 的 YARN 容器。這表示 worker 可以執行四個容器,而不會留下任何額外資源。您也可以將工作站數量乘以倍數。舉例來說,如果執行緒管理工具的記憶體設為 4096 GB,那麼擁有 8 個 CPU 和 52 GB 記憶體的工作站也能正常運作。Compute Engine VM 會根據核心數量限制 VM 可使用的記憶體容量。舉例來說,4 核心的 VM 必須至少有 7.25 GB 記憶體,最多則為 26 GB 記憶體。這表示執行緒已設為使用 1 個 CPU 和 8 GB 記憶體,但在 VM 上使用 2 個 CPU 和 26 GB 記憶體。如果執行緒管理器改為使用 2 個 CPU 和 8 GB 記憶體,則會使用所有 CPU。

磁碟

磁碟對某些管道很重要,但並非所有管道都需要。如果管道不含任何排序作業,則只有在 Spark 耗盡記憶體,需要將資料溢寫至磁碟時,才會使用磁碟。對於這類管道,磁碟大小和類型通常不會對效能造成太大影響。如果管道重組大量資料,磁碟效能就會有所差異。如果您使用 Dataproc,建議您使用至少 1 TB 的磁碟大小,因為磁碟效能會隨著磁碟大小而提升。如要瞭解磁碟效能,請參閱「設定磁碟以符合效能需求」。

工作站數量

為了盡可能縮短執行時間,您需要確保叢集足夠大,以便盡可能平行執行。舉例來說,如果管道來源使用 100 個分割來讀取資料,您就必須確保叢集足以同時執行 100 個執行緒。

最簡單的方法,就是查看 YARN 待處理記憶體隨時間的變化。如果您使用的是 Dataproc,可以在叢集詳細資料頁面中找到圖表。

如果待處理記憶體長時間維持在高水準,您可以增加工作站數量,為叢集增加額外容量。在上述範例中,叢集應增加約 28 GB,以確保達到最高並行處理程度。

強化版彈性模式 (EFM)

使用 EFM 時,您可以指定在重組資料時,只使用主要工作站節點。由於次要工作站不再負責處理中繼排序資料,因此當這些工作站從叢集中移除時,Spark 工作就不會發生延遲或錯誤。由於主要工作站不會縮減,因此叢集的縮減作業會更穩定且有效率。如果您要在靜態叢集中執行含有隨機排列功能的管道,建議您使用 EFM。

如要進一步瞭解 EFM,請參閱「Dataproc 強化版彈性模式」。