您可以使用作業調試功能模擬作業運行、檢查輸出結果,驗證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與資源編排框架(例如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作業快速入門。