Flink中的Checkpoint和Spark中的Checkpoint区别

Posted 宝哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink中的Checkpoint和Spark中的Checkpoint区别相关的知识,希望对你有一定的参考价值。

文章目录

一、checkpoint

流式应用程序必须 24/7 全天候运行,因此必须能够应对与应用程序逻辑无关的故障(例如,系统故障、JVM 崩溃等)。

1.1、Spark Streaming 的 checkpoint

Spark Streaming 需要通过Checkpoint将必要的数据或者操作进行备份,以便它可以从故障中恢复。检查点有两种类型的数据。

1.1.1、元数据检查点

将定义流计算的信息保存到 HDFS 等容错存储中。这用于从运行流应用程序驱动程序的节点故障中恢复。元数据检查点主要用在Driver进程中恢复程序。

这类信息主要包括以下几方面:

  • SparkConf的相关信息
  • Dream的相关操作
  • 队列中等待处理的Job

1.1.2、数据检查点

将生成的 RDD 保存到可靠的存储中。这在一些跨多个批次组合数据的有状态转换中是必要的。在有状态的转换操作中,Spark Streaming会定期自动设置检查点,以切断上游依赖。

在这样的转换中,生成的 RDD 依赖于前一批的 RDD,这导致依赖链的长度随着时间的推移而不断增加,数据重算所耗费的时间,与依赖连的长度成正比。为了避免恢复时间的无限制增加(与依赖链成正比),有状态转换的中间 RDD 会定期检查点到可靠存储(例如 HDFS)以切断依赖链

总而言之,元数据检查点主要用于从驱动程序故障中恢复,而数据或 RDD 检查点对于使用状态转换的基本功能也是必需的。

1.2、Flink 的 checkpoint

spark streaming 的 checkpoint 仅仅是针对 driver 的故障恢复做了数据和元数据的 checkpoint。

flink 的 checkpoint 机制 要复杂了很多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照

二、Exactly-Once Semantics

对于 SparkStreaming 任务,我们可以设置 checkpoint,然后假如发生故障并重启,我们可以从上次 checkpoint 之处恢复,但是这个行为只能使得数据不丢失,可能会重复处理,不能做到恰一次处理语义。

Flink 则使用 两阶段提交协议 来解决这个问题。

三、checkpoint的内容

spark 通过 rdd.checkpoint() 将rdd数据缓存指定目录,通过缓存的rdd数据来进行容错
flink 是 生成一个轻量级分布快照

以上是关于Flink中的Checkpoint和Spark中的Checkpoint区别的主要内容,如果未能解决你的问题,请参考以下文章

Flink中的Checkpoint和Spark中的Checkpoint区别

大数据面试题系列一

面试20220803

面试20220803

面试题系列一

flink超越Spark的Checkpoint机制