運算元探查功能可以在不修改作業的情況下看到中間結果的輸出,降低排查資料正確性錯誤的難度,提高人效和業務的連續性,減少重點即時業務的停機時間。本文為您介紹如何進行運算元探查。
背景資訊
Flink作業營運時,會遇到產出結果不符合預期的情況,這類問題常稱為資料正確性問題。資料正確性問題的產生原因複雜且不易定位,常見的解決方案是將SQL作業進行邏輯拆解,通過Print連接器列印每一步的結果,對資料結果進行分析,找到可能的原因。這個處理流程不僅耗費時間精力,而且可能因為測試資料與線上資料或者State不一致導致無法排查到原因。因此,此類問題的解決常需要很長的時間,並進行多次作業啟停。Realtime ComputeFlink版提供了運算元探查功能,可以在不修改作業的情況下,探查選中運算元的輸入輸出情況,協助您更好地排查資料正確性問題。
使用限制
-
僅支援運行中的SQL作業。
-
僅支援Realtime Compute引擎VVR 8.0.4及以上版本作業。
-
不支援CTAS、CDAS作業。
-
不支援部署到Session叢集的作業。
-
在探查沒有停止前,無法再次進行探查。
操作步驟
-
登入Realtime Compute控制台,單擊目標工作空間操作列下的控制台。
-
在左側導覽列上,選擇。
-
單擊目標作業名稱,單擊狀態總覽頁簽。
-
開啟運算元探查。
-
開啟運算元探查開關。
頁面底部展示運算元探查地區,顯示當前探查狀態(如"採樣結束")及運算元列表,列表包含名稱、狀態、Bytes Received、Records Received、Bytes Sent和Tasks列。
-
單擊需要進行探查的運算元,支援選擇多個運算元。
開啟底部運算元探查 Beta地區的展開開關,確認介面顯示已選中 1 個運算元提示,設定最大採樣時間後單擊開始探查。探查結果可前往TM日誌列表頁面查看日誌
inspect-taskmanager_0.out。 -
設定最大採樣時間。
支援設定1~30min的採樣時間,採樣過程中如果達到最大儲存上限會提前終止採樣。
-
單擊開始探查。探查狀態變更為採樣中。
說明在探查沒有停止前,無法再次進行探查。
探查啟動後,面板底部提示探查結果可前往 TM 日誌列表頁面查看記錄檔(如
inspect-taskmanager_0.out)。單擊 停止探查 可結束採樣。
-
-
查看探查結果。
您可以單擊提示中的TM 日誌列表進入到作業記錄頁面,查看Log Name為inspect-taskmanager_0.out的日誌。
結果展示如下。您可以在狀態總覽頁簽的DAG圖中複製運算元名稱,在日誌頁面搜尋查看具體運算元的輸出。
日誌中每行為一條 JSON 記錄,包含
op_name(運算元名稱)、source(資料方向,OUT表示流出、IN表示流入)等欄位。例如 Source 運算元的 source 為 OUT,Sink 運算元的 source 為 IN,表示資料從 Source 流出並被 Sink 接收。右上方篩選器可輸入運算元名稱(如 Sink: blackhole_sink)過濾日誌,匹配的運算元名稱會被高亮顯示。
探查停止方式
-
作業發生failover後自動停止(JM & TM)。
-
達到最大儲存上限會提前終止採樣。
-
達到採樣時間後停止。
-
手動停止探查。