您可以在作業啟動前配置作業資源或者作業上線後修改作業資源,支援基礎模式(粗粒度)和專家模式(細粒度)兩種資源模式。本文為您介紹如何配置作業資源,以及兩種資源模式下的參數資訊。
注意事項
資源配置後,需重啟作業才會生效。
操作步驟
進入資源配置入口。
單擊目標工作空間操作列下的控制台。
在
頁面,單擊目標作業名稱。在部署詳情頁簽,單擊資源配置地區右側的編輯。
修改作業資源資訊。
支援基礎模式(粗粒度)和專家模式(細粒度)兩種資源配置模式。
資源模式
說明
配置參數說明
基礎模式
粗粒度是一種靜態資源分配方式,您只需要給定每個TM啟動所需要的總資源(CPU和JVM總記憶體),系統會根據每個TaskManager Slot數(即flink conf taskmanager.numberOfTaskSlots)均勻分配所有資源。對於大多數簡單作業,粗粒度即可滿足要求。
專家模式
細粒度是一種動態資源分派方式,您可以配置每個Slot共用組(Slot Sharing Group,SSG)所需要的資源,Flink會計算出每個Slot需要的資源規格大小,動態從可用資源集區去申請完全符合的TM和Slot。對於複雜作業,粗粒度可能導致資源使用率低,因此需要細粒度資源對每個運算元進行精細資源控制,從而提高資源使用率,滿足作業吞吐的要求。
說明僅SQL作業支援配置專家模式。
關於TM、JM、Task或Slot等概念,詳情請參見Apache Flink Architecture。
單擊儲存。
重啟作業。
作業資源配置後,需重啟作業才會生效。
基礎模式(粗粒度)
配置項 | 說明 |
並發度 | 作業全域並發數。 |
JobManager CPU | 根據Flink最佳實務,單個JM記憶體資源需要至少配置為0.5 Core和2 GiB,才能保證作業穩定運行。建議您配置為1 Core和4 GiB。最大值為16 Core。 |
JobManager Memory | 單位為GiB,最小值為2 GiB,最大值為64 GiB。 |
TaskManager CPU | 根據Flink最佳實務,單個TM記憶體資源需要至少配置為0.5 Core和2 GiB,才能保證作業穩定運行。建議您配置為1 Core和4 GiB。最大值為16 Core。 |
TaskManager Memory | 單位為GiB,最小值為2 GiB,最大值為64 GiB。 |
每個TaskManager Slot數 | 請填寫TM的Slot數。 |
您可以根據以下公式進行推算:
作業所配置的CU數 = MAX(JM和TM的CPU總和, JM和TM的記憶體總和/4)。
每個作業所需IP數 = JM數(每個作業只有一個)+實際TM數。
實際TM數= MAX(⌈總CPU數/TM的CPU預設最大值⌉,⌈總記憶體數/TM的記憶體預設最大值⌉)。
總CPU數=設定的並發度/設定的每個TaskManager Slot數*設定的單個TM CPU。
總記憶體數=設定的並發度/設定的每個TaskManager Slot數*設定的單個TM的記憶體。
TM的CPU預設最大值為16 Core。
TM的記憶體預設最大值為64 GiB。
實際每個TM上可分配的slot數 = ⌈設定的並發數/實際TM數⌉。
例如,當並發度設定為80,每個TM Slot數設定為20,每個TM CPU設定為22 Core,每個TM 記憶體設定為30 GiB時,配置如下圖所示。
在Flink開發控制台,您會看到實際的TaskManager數為6,每個TaskManager Slot數為14。
實際的TM數和每個TM的Slot數的推算過程如下:
實際TM數 =MAX(⌈總CPU數/TM的CPU預設最大值⌉,⌈總記憶體數/TM的記憶體預設最大值⌉)= MAX(⌈設定的並發數/單個TM的Slot數量*設定的單個TM CPU/16⌉,⌈設定的並發數/單個TM的Slot數量*設定的單個TM的記憶體/64⌉)= MAX(⌈80/20*22/16⌉,⌈80/20*30/64⌉)= MAX(⌈88/16⌉,⌈120/64⌉)= MAX(6,2) = 6。
實際TM的Slot數=⌈並發數/實際TM數⌉ = ⌈80/6⌉=14。
實際TM的推算邏輯需要您設定的TM的CPU和記憶體大於其最大預設值,才可有效。
計算比值需分別向上取整。
如果您需要提高預設TM記憶體和CPU的最大值,請您提交工單。
您也可以在作業部署詳情頁簽運行參數配置地區的其他配置中設定numberOfTaskSlots參數,和介面配置每個TaskManager Slot數作用相同,但優先順序更高。
專家模式(細粒度)
僅SQL作業支援配置專家模式。
在部署作業後,若對SQL或者資源配置進行了修改,需要重建資源計劃圖,以確保作業能夠正常啟動。
配置基礎資源
配置項 | 說明 |
JobManager CPU | 根據Flink最佳實務,單個JM記憶體資源需要至少配置為0.25 Core和1 GiB,才能保證作業穩定運行,最大值16 Core。 |
JobManager Memory | 單位為GiB,例如,4 GiB。最小值為1 GiB,最大值64 GiB。 |
每個TaskManager Slot數 | 無。 |
配置Slot資源
在專家模式下,單擊立刻擷取,擷取資源計劃圖。
單擊Slot框上的表徵圖。
修改Slot配置資訊。
此處設定的並發數為該Slot共用組內所有運算元的統一併發數。設定完成後,系統將自動進行以下操作:
系統將自動為該Slot共用組內的所有運算元設定相同的並發數。
系統會根據作業的計算邏輯按需自動產生Statebackend、Python和Operator所需的記憶體,無需您手動進行配置。
建議Source節點並發度和分區數成比例,即並發度數能整除分區數。例如Kafka有16個分區,則並發度建議設定為16、8或4,這樣可以避免資料扭曲。同時Source節點的並發度不宜設定太小,避免一個Source需要讀取太多資料,導致出現入口瓶頸,影響作業吞吐。
建議按需配置除Source外的其他節點的並發度。流量大的節點,並發設定大一些;流量小的節點,並發設定小一些。
建議在有明確異常或者需求時,再調整Heap Memory和Off-heap Memory的大小,例如作業出現OOM或嚴重GC等。因為在作業正常運行時,調整Heap Memory和Off-heap Memory的大小,不會明顯改變作業的輸送量。
說明單擊確定。
配置運算元資源
預設情況下,所有運算元都放在一個Slot共用組內,因此您無法為每個運算元單獨修改資源配置。如果您需要對單獨的運算元設定資源,需要開啟多SSG模式後讓每個運算元有自己獨立的Slot,這樣就可以直接在對應的Slot上設定運算元的資源。具體的運算元資源設定步驟如下:
在作業部署詳情頁簽資源配置地區,單擊編輯後,資源模式選擇為專家模式。
(可選)如果暫無資源計劃,單擊立刻擷取。
開啟多SSG模式開關後,單擊重建。
此時一個共用組內的運算元被拆分為單個Slot。
單擊目標運算元對應Slot框上的表徵圖後,修改運算元資源。
單擊確定。
配置運算元並發、Chain策略和TTL
僅Realtime Compute引擎VVR 8.0.7及以上版本支援配置運算元TTL。
支援配置單個運算元的並發數、Chaining策略和運算元State到期時間(TTL)。
單擊目標VERTEX框上的展開VERTEX。
說明您可以單擊目標VERTEX上的表徵圖,大量設定對應VERTEX下的運算元並發數。
單擊運算元的表徵圖。
配置運算元資源。
參數說明如下:
參數
說明
並發數
對應運算元的並發數。
Chaining策略
Chain是指多個運算元被串連在一起形成的邏輯計算鏈。它能夠提高作業的執行效率和效能,減少資料在運算元之間的傳輸和序列化開銷。不過有時可能需要將Chain斷開,以便更好地控製作業的執行流程和效能。支援配置策略如下:
ALWAYS(預設值):運算元始終可以和上下遊運算元Chain一起。
HEAD:當前運算元作為Chain的前端節點,只和上遊運算元斷開Chain,下遊節點仍和當前運算元Chain在一起。
NEVER:當前運算元不會與上下遊運算元進行Chain。
運算元State到期時間設定(TTL)
支援設定秒、分鐘、小時和天為單位的到期時間。預設為作業的到期時間(未設定到期時間的作業預設為1.5天,作業到期時間配置請參見運行參數配置)。
說明僅Realtime Compute引擎VVR 8.0.7及以上版本支援。
僅有狀態運算元支援配置到期時間。
單擊確定。
相關文檔
資源最佳化技巧,詳情請參見高效能Flink SQL最佳化技巧。
如果不想手動調節資源,可以使用自動調優,系統會自動完成資源調節,詳情請參見配置自動調優。
作業的基礎配置、運行參數配置和日誌配置,詳情請參見配置作業部署資訊。
您可以通過Flink Advisor作業智能診斷服務幫您監控作業健康情況,詳情請參見作業智能診斷。