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祝好
唐云
________________________________
From: 孟小鹏 <
[hidden email]>
Sent: Tuesday, October 13, 2020 18:51
To: user-zh <
[hidden email]>
Subject: Re: flink-windows-state
贴代码看看?
发自我的iPhone
------------------ Original ------------------
From: 熊云昆 <
[hidden email]>
Date: Tue,Oct 13,2020 6:42 PM
To: 宁吉浩 <
[hidden email]>
Cc: user-zh <
[hidden email]>
Subject: Re: flink-windows-state
你的state是用rocksdb存储的吗?
| |
熊云昆
|
|
邮箱:
[hidden email]
|
签名由 网易邮箱大师 定制
On 10/13/2020 18:20, 宁吉浩 wrote:
hi,all
最近在使用flink遇到了问题,问题描述如下:
checkpoint失败,jm报tm心跳丢失,然后重新开启tm,不一会yarn上就先后开启了多个tm。
数据量并不大,给的内存也足够,tm的内存都被沾满了,不管给多少运行到一定时间就会满,就会出现上述情况。
正好跑了很多程序,有带windows 也有不带的,在这里发现了端倪,带windows的程序checkpoint的文件非常之大,给我的感觉是把窗口内的数据都加入到状态了。
个人推测是state把窗口接收到的元素都落盘了。
windows的半小时一次,滚动,非滑动。
checkpoint是1分钟一次。
有没有人遇到过这种情况?
ps: 最重要的问题是yarn又创建了tm,有人可以分享一下这块吗?
感觉这是个定时炸弹,tm仍在运行,应该是假死状态,然后又在yarn上申请容器创建tm,感觉这样下去集群都会崩溃