• 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月份了,为了一周年,发一发博客。

  • 相关阅读:
    python中的 ' ' 和 " "
    Socket编程, 在server端read()函数调用后显示错误:Transport endpoint is not connected (犯了低级错误)
    我也终于申请了自己的博客。
    山之高
    策略模式-Java实现
    SQL事务的四种隔离级别和MySQL多版本并发控制
    用JAMES实现自己的邮件服务器
    windows mysql 自动备份的几种方法
    Hibernate常见配置详细解释
    慕课网-Linux达人养成计划学习笔记
  • 原文地址:https://www.cnblogs.com/levi125/p/15170837.html
Copyright © 2020-2023  润新知