赞
踩
上一篇内容总结了 Flink 的运行架构和编程模型,这一篇我们要讨论的是 Flink 的设计,包括它是如何解决容错、内存管理、反压问题的,这些知识点是面试的常客,目的是考察大家对 Flink 理解的深度。
本篇面试内容划重点:容错、内存管理、反压。
Flink 的容错机制主要是依靠 barrier + checkpoint 来产生分布式快照,分布式快照中保存了计算过程中 Operator/task 的中间状态信息(state)。这些非常轻量级的快照会频繁地异步生成,且对系统性能不会产生太大的影响。state 状态信息会持久化到磁盘。如果程序失败,Flink 会根据最新的 checkpoint 数据来重置 Operator,保证系统能够接着失败前的状态再正常运行。所以,我们要说清楚 Flink 的容错机制必须先搞懂 CheckPoint、Barriers、state 这几个概念。
Checkpoint 是 Flink 实现容错机制的核心,它能够根据配置周期性地基于数据流中各个 Operator/task 的状态来生成快照,从而将这些状态数据定期持久化存储下来,当程序意外崩溃,重新运行程序时可以有选择地从这些快照进行恢复,从而修正因为故障带来的程序数据异常。
Checkpoint 和 Savepoint 的区别?
Checkpoint 是为 runtime 准备的,Savepoint 是为用户准备的。Checkpoint 机制的目标在于保证 Flink 作业意外崩溃重启不影响 exactly once 准确性,通常用于系统容错。而 Savepoint 的目的在于在 Flink 作业维护(比如更新作业代码)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。