Flink 报错信息总结

简介

记录一些使用Flink SQL时遇到的报错日志信息。

详细:

Caused by: java.lang.Exception: Pod terminated, container termination statuses: [flink-task-manager(exitCode=239, reason=Error, message=null)]
	at org.apache.flink.runtime.resourcemanager.active.ActiveResourceManager.onWorkerTerminated(ActiveResourceManager.java:225)
	at org.apache.flink.kubernetes.KubernetesResourceManagerDriver.lambda$terminatedPodsInMainThread$3(KubernetesResourceManagerDriver.java:317)
	at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRunAsync(AkkaRpcActor.java:440)
	at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcMessage(AkkaRpcActor.java:208)
	... 20 more

原因:发生场景,通过FlinkSql进行Sink读取Apacha Doris数据,由于表数据过大,在处理时,会把该类型数据库的表整表拉到内存中,最后再Flink日志中发现报错原因是java堆溢出:SQLException: Java heap space。

解决:使用多分区方式,来启动多线程并发读取数据,分而治之避免OOM。
参考:
[https://ci.apache.org/projects/flink/flink-docs-release-1.13/zh/docs/connectors/table/jdbc/#scan-partition-column](Flink 文档)

二: Caused by: java.sql.SQLException: ORA-01555: snapshot too old: rollback segment number 1388 with name "_SYSSMU1388_388483514$" too small

原因:同样属于Oracle表太大,读取时间过大,出现了大长的事务,增加了镜像过期的几率。

解决:按照第一点,使用多分区读取处理,大大缩短处理时间。

三: Caused by: java.lang.Exception: Job leader for job id 00245259f6646acab992d28789b17184 lost leadership.

原因:集群网络不稳定,导致和zookeeper失联,暂时断开无法连接leadership。 如果 ZK 在一段时间内没有收到 Flink RM 的心跳 ,它会撤销领导权并通知。
查看TaskManager日志可能会获得这样的警告:WARN org.apache.flink.shaded.zookeeper3.org.apache.zookeeper.ClientCnxn - Client session timed out, have not heard from server in 40020ms for sessionid 0x404f9ca531a5d6f
zk在切换leader或者网络抖动、机器繁忙、zk集群短暂无响应,都会导致curator将状态置为suspended.,会触发SUSPENDED状态,这个状态,会导致lost the leadership错误,而遇到这个错误,k8s直接就重启程序。

解决:排查zookeeper是否稳定和TM内存大小设置。

原因:一般就是设置的TaskManager内存太小导致。GC严重导致心跳超时。

解决:调大对应的TM内存值,flink-conf.yaml的配置: https://blog.csdn.net/ChinaPoison/article/details/112163548

写在最后

不知不觉,在博客园的园龄刚好满1年了,博客更的越来越少,上一次发博都是21年3月份了,为了一周年,发一发博客。

posted @ 2021-08-21 22:42  levi125  阅读(2762)  评论(0编辑  收藏  举报