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 強化版彈性模式」。