您可以在作業啟動前配置作業資源或者作業上線后修改作業資源,支持基礎模式(粗粒度)和專家模式(細粒度)兩種資源模式。本文為您介紹如何配置作業資源,以及兩種資源模式下的參數信息。
注意事項
資源配置后,需重啟作業才能生效。
操作步驟
進入資源配置入口。
登錄實時計算控制臺。
單擊目標工作空間操作列下的控制臺。
在
頁面,單擊目標作業名稱。在部署詳情頁簽,單擊資源配置區域右側的編輯。
修改作業資源信息。
支持基礎模式(粗粒度)和專家模式(細粒度)兩種資源配置模式。
資源模式
說明
配置參數說明
基礎模式
粗粒度是一種靜態資源分配方式,您只需要給定每個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數。
說明2024年5月30日后新購服務的用戶,無需關注該公式,詳情請參見網絡架構升級。
實際TM數(設置的TM的CPU或內存小于等于其默認最大值)= 設置的并發度/設置的每個TaskManager Slot數。
實際TM數(設置的TM的CPU或內存大于其默認最大值)= MAX(?TM總CPU數/16 Core?,?TM總內存數/64 GiB?)。
TM總CPU數=設置的并發度/設置的每個TaskManager Slot數*設置的單個TM CPU。
TM總內存數=設置的并發度/設置的每個TaskManager Slot數*設置的單個TM的內存。
TM的CPU默認最大值為16 Core。
TM的內存默認最大值為64 GiB。
實際每個TM上可分配的slot數 = ?設置的并發數/實際TM數?。
計算比值需分別向上取整。
資源配置默認情況下無法設置超過最大值。如果您需要設置大于默認TM內存和CPU的最大限制配置,請您提交工單。
您也可以在作業部署詳情頁簽運行參數配置區域的其他配置中設置numberOfTaskSlots參數,和界面配置每個TaskManager Slot數作用相同,但優先級更高。
例如,當并發度設置為12,每個TM Slot數設置為4,配置如下圖所示。
在Flink開發控制臺,您會看到實際的TaskManager數為3,每個TaskManager Slot數為4。
實際的TM數和每個TM的Slot數的推算過程如下:
實際TM數 = [設置的并發度/設置的每個TaskManager Slot數] = [12/4] = 3。
實際TM的Slot數=?并發數/實際TM數? = ?12/3?= 4。
專家模式(細粒度)
僅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
僅實時計算引擎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天,作業過期時間配置請參見運行參數配置)。
說明僅實時計算引擎VVR 8.0.7及以上版本支持。
僅有狀態算子支持配置過期時間。
單擊確定。
相關文檔
資源優化技巧,詳情請參見高性能Flink SQL優化技巧。
如果不想手動調節資源,可以使用自動調優,系統會自動完成資源調節,詳情請參見配置自動調優。
作業的基礎配置、運行參數配置和日志配置,詳情請參見配置作業部署信息。
您可以通過Flink Advisor作業智能診斷服務幫您監控作業健康狀況,詳情請參見作業智能診斷。