算子探查功能可以在不修改作业的情况下看到中间结果的输出,降低排查数据正确性错误的难度,提高人效和业务的连续性,减少重点实时业务的中断时间。本文为您介绍如何进行算子探查。
背景信息
Flink作业运维时,会遇到产出结果不符合预期的情况,这类问题常称为数据正确性问题。数据正确性问题的产生原因复杂且不易定位,常见的解决方法是将SQL作业进行逻辑拆解,通过Print连接器打印每一步的结果,对数据结果进行分析,找到可能的原因。这个处理流程不仅耗费时间精力,而且可能因为测试数据与线上数据或者State不一致导致无法排查到原因。因此,此类问题的解决常需要很长的时间,并进行多次作业启停。实时计算Flink版提供了算子探查功能,可以在不修改作业的情况下,探查选中算子的输入输出情况,帮助您更好地排查数据正确性问题。
使用限制
-
仅支持运行中的SQL作业。
-
仅支持实时计算引擎VVR 8.0.4及以上版本作业。
-
不支持CTAS、CDAS作业。
-
不支持部署到Session集群的作业。
-
在探查没有停止前,无法再次进行探查。
操作步骤
-
登录实时计算控制台,单击目标工作空间操作列下的控制台。
-
在左侧导航栏上,选择。
-
单击目标作业名称,单击状态总览页签。
-
开启算子探查。
-
打开算子探查开关。
页面底部展示算子探查区域,显示当前探查状态(如"采样结束")及算子列表,列表包含名称、状态、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)。
-
达到最大存储上限会提前终止采样。
-
达到采样时间后停止。
-
手动停止探查。