记录一些使用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 文档)
原因:同样属于Oracle表太大,读取时间过大,出现了大长的事务,增加了镜像过期的几率。
解决:按照第一点,使用多分区读取处理,大大缩短处理时间。
原因:集群网络不稳定,导致和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月份了,为了一周年,发一发博客。