本文主要是介绍spark从入门到放弃五十四:Spark Streaming(14)checkpoint,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.概述
每一个spark streaming 应用正常来说都要7*24小时运转的,这就是实时计算程序的特点。因为要持续不断的对数据进行计算。因此,对实时计算的要求,应该是必须能够与应用程序逻辑无关的失败,进行容错。
如果要实现这个目标,spark streaming 程序就必须将足够的信息checkpoint 到容错的存储系统上,从而让他能够从失败中进行恢复。有两种数据需要进行checkpoint
2.1元数据checkpoint
将定义流式计算逻辑的信息,保存到容错的存储系统上,比如hdfs,当运行spark streaming 应用程序的Driver 进程所在节点失败时,该信息可以进行恢复。元数据信息包括:
(1).配置信息 –创建spark Streaming 应用程序的配置信息,比如sparkConf 中的信息。
(2)DStream 操作信息–定义Spark Streaming 应用程序的计算逻辑的DStream 操作信息。
(3) 未处理的batch 信息–那些job 数据正在排队,还没有处理的batch 信息。
2.2数据checkpoint
将实时计算过程中产生的RDD 的数据保存到可靠的存储系统中。
对于一些将多个batch的数据进聚合,有状态的transform 操作,这是非常有用的。在这种transform 操作中,生成的RDD 依赖之前的batch 的RDD ,这个会导致随着时间的推移,RDD 的依赖链条会变得越来越长。
要避免依赖链条变得越来越长,导致的一起变得越来越长的失败恢复时间,有状态的transformation 操作执行过程中间产生的RDD 会定期的被checkpoint 到可靠的存储系统上如hdfs ,从而削减RDD 的依赖链条,进而缩短失败恢复时间。
一句话概括一下,元数据checkpoint 主要是为了从driver 中进行恢复,而RDD checkpoing 主要是为了 使用到有状态的transformation 操作时,能够在其生产出的数据丢失时,进行快速的数据恢复。
3.如何启用checkpoint 机制
1.对于有状态的transform 操作,启用checkpoint 机制,定期的将其生产的RDD 数据checkpoint 式比较简单的。
可以通过配置一个容错的,可靠的文件系统比如HDFS 目录,来启用checkpoint 机制,checkpoint 数据就会写入到该目录,使用StreamingContext 的checkpoint() 方法即可,然后就可以放心的使用有状态的transformation 操作可
2.如果为了要从Driver 失败进行恢复,那么启用checkpoint 机制,是比较复杂的需要改写spark Streaming 应用程序。
当应用程序第一次启动的时候 需要创建一个新的Streaming context 并且调用其start 方法进行启动当driver 从失败中恢复过来时,需要从checkpoint 目录中记录的元数据进行恢复,恢复出来一个Streaming context .
欢迎关注,更多福利
这篇关于spark从入门到放弃五十四:Spark Streaming(14)checkpoint的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!