簡介
記錄一些使用Flink SQL時遇到的報錯日志信息。
一:Caused by: java.lang.Exception: Pod terminated, container termination statuses: [flink-task-manager(exitCode=239, reason=Error, message=null)]
詳細:
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內存大小設置。
四:Caused by: java.util.concurrent.TimeoutException: Heartbeat of TaskManager with id uits-test-flink-taskmanager-1-11 timed out.
原因:一般就是設置的TaskManager內存太小導致。GC嚴重導致心跳超時。
解決:調大對應的TM內存值,flink-conf.yaml的配置: https://blog.csdn.net/ChinaPoison/article/details/112163548
寫在最后
不知不覺,在博客園的園齡剛好滿1年了,博客更的越來越少,上一次發博都是21年3月份了,為了一周年,發一發博客。