flinkcdc中checkpoint不成功問題排查
本文分享自天翼云開發者社區《flinkcdc中checkpoint不成功問題排查》,作者:徐****東
使用flink-1.16和flinkcdc-3.0進行數據接入,采用standalone模式。運行一段時間后checkpoint開始失敗,但日志中沒有報錯信息。

因savepoint和checkpoint機制一致,使用手動打savepoint斷點的方式,嘗試查明失敗原因。執行指令:
/usr/local/flink/bin/flink savepoint ${job_id} /usr/local/flink-cdc/savepoint/
執行后報錯,發現如下報錯信息。
[1]:Caused by: org.apache.flink.util.SerializedThrowable: java.util.concurrent.ExecutionException: java.io.IOException: Size of the state is larger than the maximum permitted memory-backed state. Size=5325329, maxSize=5242880. Consider using a different checkpoint storage, like the FileSystemCheckpointStorage.
經分析,是作業的state,默認使用內存存儲。隨著作業的運行,state超出允許的最大內存,所以無法存儲,導致checkpoint被cancel進而失敗。
直接原因是作業的state,默認使用內存存儲。隨著作業的運行,state超出允許的最大內存,所以無法存儲,導致checkpoint被cancel進而失敗。
嘗試在flink-conf.yaml中添加如下參數,加大內存限制。發現checkpoint仍會超出內存限制失敗。排查源碼發現,flink在1.16已去掉該參數。官方建議standalone模式僅作為測試,因此不提供加大內存限制的方式。
state.backend.memory.max-state-size: 10000000
正確解決辦法為,使用hdfs存儲checkpoint。

浙公網安備 33010602011771號