資源管理

管道可讓您指定要提供給驅動程式和每個執行者的 CPU 和記憶體。您可以在 Cloud Data Fusion Studio 管道設定中設定資源。詳情請參閱「管理管道設定」。

本頁面提供指南,說明針對您的用途應設定多少驅動程式和執行緒資源。

驅動程式

由於驅動程式不會執行太多工作,因此預設的 1 個 CPU 和 2 GB 記憶體就足以執行大多數管道。對於含有許多階段或大型結構描述的管道,您可能需要增加記憶體。如並行處理 JOIN一文所述,如果管道執行記憶體內的彙整作業,記憶體內資料集也必須符合驅動程式的記憶體。

Executor

請參考下列 CPU 和記憶體資源的規範。

CPU

指派給執行緒的 CPU 數量會決定執行緒可平行執行的工作數量。每個資料區段都需要一個工作來處理。在大多數情況下,將 CPU 數量設為 1 是最簡單的做法,而非著重於調整記憶體。

記憶體

對於大多數管道而言,執行緒記憶體只要有 4 GB 即可順利執行管道。使用 4 GB 的執行緒記憶體,已完成大量偏移的多 TB 彙整作業。您可以增加記憶體量來改善執行速度,但這需要對資料和管道有充分的瞭解。

Spark 會將記憶體分割成多個區段。一個區段保留給 Spark 內部使用,另一個區段則用於執行和儲存。

根據預設,儲存和執行區域約佔總記憶體的 60%。Spark 的 spark.memory.fraction configuration 屬性 (預設為 0.6) 會控管這個百分比。這個數量適用於大多數工作負載,通常不需要調整。

儲存和執行區段進一步細分為儲存和執行空間。根據預設,這些空間的大小相同,但您可以設定 spark.memory.storageFraction (預設為 0.5) 來調整這些空間,控制預留給儲存空間的百分比。

儲存空間用於儲存快取資料。執行空間會儲存洗牌、彙整、排序和匯總資料。如果執行部分有額外的空間,Spark 可以使用其中的部分空間儲存資料。不過,執行資料絕不會使用任何儲存空間。

如果您知道管道不會快取任何資料,可以減少儲存空間比例,為執行需求留出更多空間。

注意事項:YARN 容器記憶體

執行緒記憶體設定會控制提供給執行緒的堆積記憶體量。Spark 會為堆外記憶體額外增加記憶體量,這會由 spark.executor.memoryOverhead 設定控管,預設為 384m。也就是說,YARN 為每個執行工具保留的記憶體容量,高於管道資源設定中設定的數量。舉例來說,如果您將執行緒記憶體設為 2048m,Spark 會將 384m 加到該數字,並要求 YARN 提供 2432m 的容器。此外,YARN 會將要求數字四捨五入為 yarn.scheduler.increment-allocation-mb 的倍數,預設值為 yarn.scheduler.minimum-allocation-mb。如果設為 512,YARN 會將 2432m 四捨五入為 2560m。如果值設為 1024,YARN 會將 2432m 進位至 3072m。在決定叢集中每個 worker 節點的大小時,請記住這一點。