Flink大状态优化笔记

一、问题表现
1、taskmanager不断重启。
2、吞吐量不断下降,数据堆积,checkpoint失败

二、解决:
1、由于我们是程序开发,自定义状态,所以首先考虑优化中间结构,将原有MapState中的多个值,简化key及value,state减少了1/3,后自定义对象pojo实现序列化接口,方便存取。状态也减少了一些,但是效果不大。
2、开启增量(怎么忘记了这个!)
new RocksDBStateBackend(checkpointUrl, true)

3、做完上面两步后,taskmanager就不会再重启了,但是随着状态的增加,吞吐量开始下降,于是开始优化RocksDB的存储,参考文章https://cloud.tencent.com/developer/article/1592441。
在flink程序中设置stateBackend.setPredefinedOptions(PredefinedOptions.SPINNING_DISK_OPTIMIZED_HIGH_MEM);
参数,简单粗暴用内存解决问题。我的理解是内存小了,会去磁盘找状态,导致吞吐量下降。

最终问题解决!

你可能感兴趣的:(大数据)