全部產品
Search
文件中心

Realtime Compute for Apache Flink:配置作業資源

更新時間:Sep 13, 2024

您可以在作業啟動前配置作業資源或者作業上線後修改作業資源,支援基礎模式(粗粒度)和專家模式(細粒度)兩種資源模式。本文為您介紹如何配置作業資源,以及兩種資源模式下的參數資訊。

注意事項

資源配置後,需重啟作業才會生效。

操作步驟

  1. 進入資源配置入口。

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 營運中心 > 作業營運頁面,單擊目標作業名稱。

    4. 部署詳情頁簽,單擊資源配置地區右側的編輯

  2. 修改作業資源資訊。

    支援基礎模式(粗粒度)和專家模式(細粒度)兩種資源配置模式。

    資源模式

    說明

    配置參數說明

    基礎模式

    粗粒度是一種靜態資源分配方式,您只需要給定每個TM啟動所需要的總資源(CPU和JVM總記憶體),系統會根據每個TaskManager Slot數(即flink conf taskmanager.numberOfTaskSlots)均勻分配所有資源。對於大多數簡單作業,粗粒度即可滿足要求。

    image

    基礎模式(粗粒度)

    專家模式

    細粒度是一種動態資源分派方式,您可以配置每個Slot共用組(Slot Sharing Group,SSG)所需要的資源,Flink會計算出每個Slot需要的資源規格大小,動態從可用資源集區去申請完全符合的TM和Slot。對於複雜作業,粗粒度可能導致資源使用率低,因此需要細粒度資源對每個運算元進行精細資源控制,從而提高資源使用率,滿足作業吞吐的要求。

    image

    說明

    僅SQL作業支援配置專家模式。

    專家模式(細粒度)

    關於TM、JM、Task或Slot等概念,詳情請參見Apache Flink Architecture

  3. 單擊儲存

  4. 重啟作業。

    作業資源配置後,需重啟作業才會生效。

基礎模式(粗粒度)

配置項

說明

並發度

作業全域並發數。

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時,配置如下圖所示。

image

在Flink開發控制台,您會看到實際的TaskManager數為6,每個TaskManager Slot數為14。

image

實際的TM數和每個TM的Slot數的推算過程如下:

  1. 實際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。

  2. 實際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資源

  1. 專家模式下,單擊立刻擷取,擷取資源計劃圖。

    image

  2. 單擊Slot框上的編輯表徵圖。SLOT

  3. 修改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的大小,不會明顯改變作業的輸送量。

  4. 單擊確定

配置運算元資源

預設情況下,所有運算元都放在一個Slot共用組內,因此您無法為每個運算元單獨修改資源配置。如果您需要對單獨的運算元設定資源,需要開啟多SSG模式後讓每個運算元有自己獨立的Slot,這樣就可以直接在對應的Slot上設定運算元的資源。具體的運算元資源設定步驟如下:

  1. 在作業部署詳情頁簽資源配置地區,單擊編輯後,資源模式選擇為專家模式

  2. (可選)如果暫無資源計劃,單擊立刻擷取

    image

  3. 開啟多SSG模式開關後,單擊重建

    此時一個共用組內的運算元被拆分為單個Slot。

    image

  4. 單擊目標運算元對應Slot框上的編輯表徵圖後,修改運算元資源。

    image

  5. 單擊確定

配置運算元並發、Chain策略和TTL

說明

僅Realtime Compute引擎VVR 8.0.7及以上版本支援配置運算元TTL。

支援配置單個運算元的並發數、Chaining策略和運算元State到期時間(TTL)。

  1. 單擊目標VERTEX框上的image展開VERTEX。

    image

    說明

    您可以單擊目標VERTEX上的編輯表徵圖,大量設定對應VERTEX下的運算元並發數。

  2. 單擊運算元的image表徵圖。

    image

  3. 配置運算元資源。

    image

    參數說明如下:

    參數

    說明

    並發數

    對應運算元的並發數。

    Chaining策略

    Chain是指多個運算元被串連在一起形成的邏輯計算鏈。它能夠提高作業的執行效率和效能,減少資料在運算元之間的傳輸和序列化開銷。不過有時可能需要將Chain斷開,以便更好地控製作業的執行流程和效能。支援配置策略如下:

    • ALWAYS(預設值):運算元始終可以和上下遊運算元Chain一起。

    • HEAD:當前運算元作為Chain的前端節點,只和上遊運算元斷開Chain,下遊節點仍和當前運算元Chain在一起。

    • NEVER:當前運算元不會與上下遊運算元進行Chain。

    運算元State到期時間設定(TTL)

    支援設定秒、分鐘、小時和天為單位的到期時間。預設為作業的到期時間(未設定到期時間的作業預設為1.5天,作業到期時間配置請參見運行參數配置)。

    說明
    • 僅Realtime Compute引擎VVR 8.0.7及以上版本支援。

    • 僅有狀態運算元支援配置到期時間。

  4. 單擊確定

相關文檔