用于实时计算的 Flink 状态管理和容错机制

主要观点:本文总结了 Shi Xiaogang 在 2018 年 8 月 11 日北京 Flink Meetup 上的分享,内容涉及阿里巴巴大数据团队的 Blink 研发,包括有状态流数据处理、Flink 中的状态接口、状态管理与容错实现、阿里巴巴对 Flink 的贡献等。
关键信息

  • 传统流计算系统对程序状态支持不足,如状态数据存储访问、备份恢复、分区动态调整等问题,而 Flink 提供丰富状态访问接口和高效容错机制。
  • Flink 有基于数据分区和调整模式的两种状态:Keyed States 和 Operator States,各自有不同的数据结构和调整方式。
  • 可通过启用检查点提高程序可靠性,Flink 支持至少一次和精确一次两种模式,还提供备份非状态存储程序状态数据机制及从停止作业恢复的两种模式(Savepoint 和 External checkpoint)。
  • Flink 提供三种 StateBackends 用于状态管理和容错,包括 MemoryStateBackend、FsStateBackend 和 RockDBStateBackend 等。
  • Alibaba 自 2015 年支持 Flink 研究,2016 年双 11 购物节使用 Blink 系统提供服务,2017 年 Blink 成为阿里巴巴实时计算引擎。
    重要细节
  • 有状态计算任务结果依赖输入对象和数据当前状态,如 WordCount 中的单词计数就是有状态变量。
  • Flink 的 Keyed States 可使用多种数据结构类型,且支持动态调整;Operator States 目前仅支持 List,有多种调整模式。
  • 检查点操作基于 Chandy-Lamport 算法,Flink 对全检查点和 RocksDB 增量检查点进行了优化。
  • MemoryStateBackend 适合存储少量数据,FsStateBackend 和 RocksDBStateBackend 可存储大量数据。
阅读 1
0 条评论