你好, 这边猜测, 应该flink在checkpoint到hdfs的过程中, hadoop hdfs client  存在续约线程泄露的问题.
 
根据checkpoint周期和任务checkpoint大小,比较容易的复现在写入clickhouse/iceberg的flink任务的taskmanager中,
并且泄露的线程以每天10~30的速度增长.    通过arthas发现LeaseRenewer线程不能被正确销毁和不断地创建, 基本判定是
LeaseRenewer的锁和检查机制失败导致线程泄露, 这个问题不止影响hadoop 3.1.0版本, 经过测试hadoop 历史版本(比如
2.8.5也受到了影响)https://issues.apache.org/jira/browse/HDFS-14575,
大家可以把jira中提交的commit变动的两个类DFSClient.java LeaseRenewer.java cherry
pick到生产使用的分支进行对比测试, 这个jira commit中也包含了完整的线程泄露过程的单元测试供测试

zilong xiao <acidzz...@gmail.com> 于2021年5月13日周四 17:09写道:

> 并没有定位到具体原因,只能靠重启作业缓解。。。
>
> zhisheng <zhisheng2...@gmail.com> 于2021年5月13日周四 下午4:20写道:
>
> > 你好,这个问题后来定位到问题了吗?
> >
> > 我们生产也有一个作业有这样的问题,Flink 版本是 1.10.0,这个作业是 JM 的线程数很多(快 6k),作业是 flink 读取
> > Kafka,会关联 HBase ,开启了 Checkpoint,就这个作业有问题,很奇怪
> >
> > https://tva1.sinaimg.cn/large/008i3skNgy1gqgvhdu674j31je0u0795.jpg
> >
> > zilong xiao <acidzz...@gmail.com> 于2020年12月8日周二 下午6:21写道:
> >
> > > 作业数据流是 kafka -> flink ->
> > > http/prometheus,目前这类型的作业很多,但是就只有那几个有问题,而且是必现,每次都只能重启,然后看着线程数上涨。。
> > 我再debug看看~
> > >
> > > Paul Lam <paullin3...@gmail.com> 于2020年12月8日周二 下午6:00写道:
> > >
> > > > Hi,
> > > >
> > > > 我之前说的多个集群的情况主要指写入数据到 HDFS。如果只有 checkpoint 依赖 HDFS 而出现这种情况的话,的确是非常奇怪。
> > > >
> > > > Best,
> > > > Paul Lam
> > > >
> > > > > 2020年12月8日 11:03,zilong xiao <acidzz...@gmail.com> 写道:
> > > > >
> > > > > Hi Paul,
> > > > >    线程名称是一模一样的,都是user1@cluserA,HDFS client版本对于用户来说是透明的,作业使用的是Flink
> > > > >
> > > >
> > >
> >
> 1.11版本,该Flink版本使用HDFS版本好像是2.8.1,在Flink中和集群有持续交互的就只能想到checkpoint,开了DEBUG日志也没能找到root
> > > > > cause。。
> > > > >
> > > > >    另外 您说的“线程个数应该和用到的 HDFS 集群数目相同”不是很理解,作业只能提交到一个具体的集群吧?
> > > > >
> > > > > Paul Lam <paullin3...@gmail.com> 于2020年12月8日周二 上午10:45写道:
> > > > >
> > > > >> 我记得 LeaseRenewer 是 JVM 级别的,线程个数应该和用到的 HDFS 集群数目相同。
> > > > >>
> > > > >> 你看看它们具体的线程名是不是完全相同(比如都是 user1@cluserA)?还有 HDFS client 的版本是什么?
> > > > >>
> > > > >> Best,
> > > > >> Paul Lam
> > > > >>
> > > > >>> 2020年12月7日 18:11,zilong xiao <acidzz...@gmail.com> 写道:
> > > > >>>
> > > > >>> 在生产中发现有个别Flink SQL 1.11作业的container线程数很高,查看Thread
> > > > Dump发现有很多名为LeaseRenewer
> > > > >>> 的线程处于TIMED_WAITING状态,目前只能复现其现象,但是无法定位原因,不知道社区是否有类似经历的小伙伴呢?
> > > > >>>
> > > > >>> Flink version: 1.11
> > > > >>> State backend:filesystem
> > > > >>> checkpoint interval: 60s
> > > > >>
> > > > >>
> > > >
> > > >
> > >
> >
>

回复