一步一个脚印,一天一道大数据面试题。
在实时处理中,状态管理是十分常用的。比如监控某些数据是否一直快速增长。那就需要记录到之前的状态,数值。
那作为最热门的实时处理框架,Flink对状态管理是有一套的。那就是状态后端,拿来管理,储存 Flink 里状态的东西,默认是用 MemoryBackend。
Flink 默认有 3 个 Backend
– MemoryStateBackend
将状态存储在内存中。不设置的话,默认用的就是这种。很不稳定,如果程序中断停止,存在内存中的状态就会消失,重启不能正常恢复,处理状态。所有一般不推荐,只推荐自己测试时用。
– FsStateBackend
将状态存储在 FileSystem,如本地文件系统,或 HDFS 文件系统。写入到文件后,如果遇到程序中断停止,能够正常恢复。生产环境中, FsStateBackend 是个不错的选择。
– RockDBStateBackend
需要集群中安装 RockDB,使用 RockDB 存储状态。RocksDB 是一个高效的嵌入式键值存储数据库,专为快速和低延迟存储而设计。所以如果需要更高的性能,可以使用这个状态后端。