您可以使用作業調試功能類比作業運行、檢查輸出結果,驗證SELECT或INSERT商務邏輯的正確性,提升開發效率,降低資料品質風險。本文為您介紹如何進行Flink SQL作業調試。
背景資訊
您可以在Flink開發控制台使用作業調試功能本地驗證作業邏輯的正確性,而不會將資料實際寫入您生產的下遊中(無論您使用什麼樣的結果表)。使用調試功能時,您可以使用上遊的線上資料或指定調試資料。調試可以包含多個SELECT或INSERT的複雜作業。此外,查詢語句支援UPSERT,即可以執行count(*)
等包含更新操作的語句。
使用限制
作業調試功能需要已建立Session叢集。
僅SQL作業支援作業調試。
CTAS和CDAS文法不支援調試。
VVR 4.0.8及以下版本的Session叢集不支援調試CDC源表,因為CDC源表不是Append-only模式。
Flink全託管預設讀取最多1000條資料後會自動暫停。
注意事項
在建立Session叢集時會消耗叢集資源,其中消耗的資源和您建立叢集時選擇的資源配置有關。
VVR 3.0.4及以下版本的每個Session叢集運行後,都會額外消耗0.5 CU的資源。
請勿將Session叢集用於正式生產環境,Session叢集可以作為開發測試環境。使用Session叢集調試作業,可以提高作業JM(Job Manager)資源使用率。在正式環境中使用Session叢集,JM的複用機制會對作業間的穩定性產生負面影響,詳情如下:
JobManager單點故障會對叢集內的所有作業造成影響。
TaskManager單點故障會對在其上有task啟動並執行相關作業造成影響。
同一個TaskManager內部,不同Task之間如果沒有進程隔離,則存在相互影響的潛在風險。
如果Session叢集為預設配置,則有以下建議:
對於單並發的小作業,建議整個叢集的作業總數不超過100個。
對於複雜作業,建議單作業最大並發數不超過512,64個並發的中等規模作業單叢集不多於32個。否則可能會出現心跳逾時等問題影響叢集穩定性。此時,您需要增大心跳間隔和心跳逾時時間。
如果您需要同時運行更多的任務,則需要增加Session叢集的資源配置。
操作步驟
步驟一:建立Session叢集
進入Session叢集管理頁面。
單擊目標工作空間操作列下的控制台。
在左側導覽列上,單擊
。
單擊建立Session叢集。
填寫配置資訊。
參數詳情如下表所示。
模組
配置項
說明
基礎配置
名稱
Session叢集名稱。
部署目標
選擇目標資源隊列,資源隊列建立詳情請參見管理資源隊列。
狀態
設定當前叢集的期望運行狀態:
RUNNING:當叢集配置完成後保持運行狀態。
STOPPED:當叢集配置完成後保持停止狀態,同樣會停止所有部署在該Session叢集上啟動並執行作業。
標籤名
您可以在標籤選項中添加作業標籤,便於在總覽頁面快速定位作業。
標籤值
無。
配置
引擎版本
引擎版本詳情請參見引擎版本介紹和生命週期策略。建議您使用推薦版本或穩定版本,引擎版本戳記含義詳情如下:
推薦版本:當前最新大版本下的最新小版本。
穩定版本:還在產品服務期內的大版本下最新的小版本,已修複歷史版本缺陷。
普通版本:還在產品服務期內的其他小版本。
EOS版本:超過產品服務期限的版本。
Flink重啟策略配置
該參數取值如下:
Failure Rate:基於失敗率重啟。
選擇該選項後,您還需要填寫檢測Failure Rate的時間間隔、時間間隔內的最大失敗次數和每次重啟時間間隔。
Fixed Delay:固定間隔重啟。
選擇該選項後,您還需要填寫嘗試重啟的次數和每次重啟時間間隔。
No Restarts:作業task失敗不會重啟。
重要如果您沒有配置該參數,則按Apache Flink預設的重啟策略,即當有Task失敗時,如果沒有開啟Checkpoint,JobManager進程不會重啟。如果開啟了Checkpoint,則JobManager進程會重啟。
其他配置
在此設定更多Flink配置。例如
taskmanager.numberOfTaskSlots: 1
。資源配置
Task Managers數量
預設與並行度一致。
JobManager CPU Cores
預設值為1。
JobManager Memory
最小值為1 GiB,推薦值為4 GiB。單位建議使用GiB或MiB,例如,1024 MiB或1.5 GiB。
JobManager推薦配置包含JobManager資源以及心跳相關參數。具體內容如下:
由於JobManager上承載TaskManager心跳、作業Task序列化和資源調度等功能。因此建議JobManager資源不小於預設配置,請根據叢集負載情況進行處理。
為了叢集穩定,避免JobManager主線程繁忙導致心跳逾時。因此建議心跳間隔(heartbeat.interval)不小於10秒,同時心跳逾時(heartbeat.timeout)不小於50秒。請根據TaskManager個數與作業量上漲情況而上調。
TaskManager CPU Cores
預設值為2。
TaskManager Memory
最小值為1 GiB,推薦值為8 GiB。單位建議使用GiB或MiB,例如,1024 MiB或1.5 GiB。
TaskManager推薦配置包含單個TaskManager的Slot個數(taskmanager.numberOfTaskSlots)及TaskManager資源大小。具體內容如下:
對於單並發小作業,建議單Slot的CPU記憶體比為1:4,使用的資源不小於1核2 GiB。
對複雜作業,建議單Slot使用資源不小於1核4 GiB。在預設資源配置下,每個TaskManager可以配置2個Slot。
TaskManager資源不宜過小,也不宜過大,推薦預設資源配置並將Slot數目設為2。
重要如果單個TaskManager資源過小,則可能影響其上作業的穩定性,並且由於其Slot數目不多,無法有效平攤TaskManager的開銷,降低了資源的利用效率。
如果單個TaskManager資源過大,則TaskManager上啟動並執行作業數會很多,一旦TaskManager發生單點故障,影響面會很大。
日誌配置
根日誌等級
記錄層級從低到高的順序如下:
TRACE:比DEBUG更細粒度的資訊。
DEBUG:系統運行狀態的資訊。
INFO:重要或者您感興趣的資訊。
WARN:系統可能出現潛在錯誤的資訊。
ERROR:系統出現錯誤和異常的資訊。
類日誌等級
填寫日誌名和層級。
日誌模板
可以選擇系統模板或自訂模板。
說明關於Flink與Resource Orchestration Service架構(例如Kubernetes、Yarn等)整合的相關選項詳情,請參見Resource Orchestration Frameworks。
單擊建立Session叢集。
Session叢集建立完成後,您可以在作業調試介面或部署介面選擇此叢集。
步驟二:作業調試
SQL作業開發,編寫作業代碼。詳情請參見SQL作業開發。
在作業開發頁面,單擊調試,並選擇調試叢集,單擊下一步。
配置調試資料。
如果您使用線上資料,直接單擊確認即可。
如果您需要使用調試資料,需要先單擊下載調試資料範本後,填寫調試資料後,上傳調試資料。
其中該頁面涉及的功能解釋如下。
配置項
說明
下載調試資料範本
為了便於編輯,您可以直接下載調試資料範本,模板已適配源表的資料結構。
上傳調試資料
如果您需要使用本地調試資料進行調試,您可以先下載調試資料範本,在本地編輯好資料後上傳,並選中使用調試資料。
調試資料檔案存在以下限制:
上傳檔案僅支援CSV格式。
CSV格式的檔案必須含有表頭,例如 id(INT)。
調試資料CSV檔案最大支援1 MB或1千條記錄。
資料預覽
上傳好調試資料後,單擊源表名稱左側的表徵圖,可以預覽資料和下載調試資料。
調試代碼預覽
調試功能會自動改變源表和結果表的DDL代碼,但不會改變作業中的實際代碼。您可以在下方預覽代碼詳情。
確定好調試資料後,單擊確定。
單擊確定後,SQL編輯器下方會顯示調試結果。
相關文檔
作業開發或調試完成後,如果您需要將作業部署上線,請參見部署作業。
完成作業部署後,如果您需要將作業啟動至運行階段,請參見作業啟動。
Flink JAR作業和Flink Python作業的調試方法,請參見JAR作業調試或Python作業調試。
如果您需要瞭解Flink SQL作業的完整的操作流程樣本,請參見Flink SQL作業快速入門。