提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
StateBackend的类别
Flink的三种状态管理器:基于内存的MemoryStateBackend,基于文件系统的FsStateBackend,基于RockDB作为存储介质的RocksDBStateBackend。
这三种类型的状态管理器都能有效地存储flink流式计算过程中产生的状态数据,默认情况下使用的是基于内存的状态管理器。
MemoryStateBackend
基于内存的状态管理器将状态数据全部存储在jvm堆内存中,包括用户在使用DataStream API中创建的Key/Value State,窗口中缓存的状态数据,以及触发器等数据。
优点:非常快速高效
缺点:受内存容量限制(一但存储状态数据过多就会导致系统内存溢出等问题,从而影响整个应用的正常运行)
不安全(机器一但出现故障,那么整个主机内存中的状态数据都会丢失,无法恢复任务中的状态数据)
MemoryStateBackend有以下特点需要使用时注意
1.聚合类算子的状态会存储在JobManager内存中,对聚合类算子比较多的应用会对JobManager的内存有一定压力,从而影响整个集群
2.创建MemoryStateBackend时可以指定内存大小,但是状态数据传输大小会受限于Akka框架通信的‘akka.framesize’大小限制,该指标表示在JobMana