开发者社区> 问答> 正文

flink-windows-state

hi,all 最近在使用flink遇到了问题,问题描述如下: checkpoint失败,jm报tm心跳丢失,然后重新开启tm,不一会yarn上就先后开启了多个tm。 数据量并不大,给的内存也足够,tm的内存都被沾满了,不管给多少运行到一定时间就会满,就会出现上述情况。 正好跑了很多程序,有带windows 也有不带的,在这里发现了端倪,带windows的程序checkpoint的文件非常之大,给我的感觉是把窗口内的数据都加入到状态了。 个人推测是state把窗口接收到的元素都落盘了。

windows的半小时一次,滚动,非滑动。 checkpoint是1分钟一次。 有没有人遇到过这种情况?

ps: 最重要的问题是yarn又创建了tm,有人可以分享一下这块吗? 感觉这是个定时炸弹,tm仍在运行,应该是假死状态,然后又在yarn上申请容器创建tm,感觉这样下去集群都会崩溃*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-07 12:27:32 450 0
1 条回答
写回答
取消 提交回答
  • Hi

    这里涉及到的问题比较多。

    1. 为什么心跳会超时?是因为Full GC么,如果是使用的FsStateBackend/MemoryStateBackend,这是比较好解释的,因为数据在JVM堆上。如果使用的是RocksDB,这里是解释不通的。
    2. window确实是使用state来存储数据,如果认为自己的state太大的话,是不是因为使用不当呢?可以参考文档 [1] 进行调优
    3. 仍在运行的TM里面在做什么呢,为什么没有被JM释放,需要检查相关孤儿TM的日志以及jstack查看进程操作判断。

    [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#useful-state-size-considerations*来自志愿者整理的flink

    2021-12-07 15:46:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载