Flink State 是 Apache Flink 中用于存储任务状态信息的关键机制。在许多场景都需要通过查询任务快照中的 State 获取有效线索:
相比传统的脚本方式,可视化的操作界面能够更加直观和易用,大幅降低了用户的学习成本。通过与实时计算平台深度集成,提供一站式解决方案。此外,该功能还具备极高的灵活性,支持通过SQL查询State数据,能够满足不同用户的多样化需求。
实时计算任务在实际运行过程中,某个小时窗口内的聚合结果异常(例如:订单总金额突然暴跌)为了验证问题,可以使用 Flink State 可视化功能进行问题排查。
(1)进入状态探查入口
(2)启动状态探查
(3)查看探查结果
(4)定位问题根因
通过对最近的几次checkpoint进行探查,可以定位到哪次checkpoint开始出现异常信息,并根据对应checkpoint里的source位点信息,可以尝试回溯对应位点信息开始的数据,通过对比正常窗口与异常窗口的 State 数据,可以判断问题可能出在:
最后结合 State 可视化的直观展示,可以迅速定位异常窗口,并进一步分析数据流转情况,从而采取相应的优化措施,例如在 SQL 语句中增加数据校验逻辑(如 WHERE amount >= 0)或对上游数据进行预处理。
相比于可视化的方式,自定义模式更适合具有特殊需求的数据开发者,使用者可以使用链接FlinkState-Connector,实现更多自定义功能。
实时平台支持通过 SQL 查询 State 数据,满足不同用户的需求,以下是在实时开发平台FlinkSQL脚本模式使用 FlinkState-Connector 示例,支持在实时平台通过 FLinKSQL 方式查询 flinkstate-x插件作为 Source 端的状态信息:
CREATE TABLE source
(
operatorID STRING,--算子id
stateName STRING,--状态名称
stateType STRING,--状态类型(Listoperator)
serializerType STRING,--state序列化方式
stateValue STRING,--具体的state值
`key` STRING,--keyState里key的值
keySerializer Type STRING,--keyState里key的序列化方式
namespace STRING--命名空间
)WITH(
'connector'='flinkstate-x',
'path'=
'hdfs://ns1/dtInsight/flink112/checkpoints/9b7a4505edd19a1217d1ab16ccf0d31e/chk-276',
'properties.hadoop.fs.defaultFS'='hdfs://ns1',
'properties.hadoop.dfs.ha.namenodes.ns1'='nn1,nn2',
'properties.hadoop.dfs.namenode.rpc-address.ns1.nn2'='172.16.23.232:9000',
'properties.hadoop.dfs.namenode.rpc-address.ns1.nn1'='172.16.23.231:9000',
'properties.hadoop.dfs.nameservices'='ns1',
'properties.hadoop.dfs.client.failover.proxy.provider.ns1'=
'org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
);
名称 | 是否必选 | 默认值 | 含义 |
path | 是 | 无 | checkPoint路径 |
properties.hadoop | 否 | 默认flink运行环境对应的hdfs集群 | checkpoint所在hdfs配置信息 |
just-metadata | 否 | false | 只读取state元数据信息,不读取具体值 |
|operatorID|stateName|stateType|serializerType|stateValue|key|keySerializerType|namespace|RowKind|
|cbc357ccb763df2852fee8c4fc7d55f2|topic-partition-offset-states|ListState|org.apache.flink.api.java.typeutils.runtime.TupleSerializer|(KafkaTopicPartition{topic='user_behavior',partition=0},-915623761774)|null|null|null|INSERT|
未来计划新增对 WindowState、BroadcastState 等状态类型的支持,同时提供 State 数据导出为 CSV 格式的功能以方便离线分析和存档,并具备告警功能,在 State 过大或异常时及时通知用户,全面满足多样化的场景需求。
《数据资产管理白皮书》下载地址: https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址: https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址: https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址: https://www.dtstack.com/resources/1004/?src=bbs
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网: https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址: https://github.com/DTStack