赞
踩
欢迎关注今日头条号、微信公众号、知乎号:仰望夜空一万次
随意聊聊并记录从小城市到上海工作生活的所思所想。
不去记录,有些事情都好像没有发生过。
Flink 中的每个方法或算子都能够是有状态的。为了让状态容错,Flink 需要为状态添加 checkpoint(检查点)。
Flink 的 checkpoint 机制前提条件:
Checkpoint 是从 source 触发到下游所有节点完成的一次全局操作。
State 其实就是 Checkpoint 所做的主要持久化备份的主要数据
对于 keyed state,有两个特点:
下图阐释了目前 Flink 内置的三类 state backend,其中MemoryStateBackend
和FsStateBackend
在运行时都是存储在 java heap 中的,只有在执行 Checkpoint 时,FsStateBackend
才会将数据以文件格式持久化到远程存储上。而RocksDBStateBackend
则借用了 RocksDB(内存磁盘混合的 LSM DB)对 state 进行存储。
默认情况下,状态是保持在 TaskManagers 的内存中,checkpoint 保存在 JobManager 的内存中。为了合适地持久化大体量状态, Flink 支持各种各样的途径去存储 checkpoint 状态到其他的 state backends 上。通过 StreamExecutionEnvironment.setStateBackend(…)
来配置所选的 state backends。
env.fromElements(String ...) 其中使用FromElementsFunction类,作为SourceFunction,FromElementsFunction类同时实现了CheckpointedFunction接口,其中使用类型为ListState的Operaor state。
- @Public
- public interface CheckpointedFunction {
- void snapshotState(FunctionSnapshotContext context) throws Exception;
-
-
- void initializeState(FunctionInitializationContext context) throws Exception;
- }
word count 的 sum 函数调用StreamGroupedReduce类操作 keyed state ,数据结构为ValueState。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。