Spark:RDD checkpoint容错机制

 

经过上一节的学习,我们了解到合理地将RDD持久化/缓存,不仅直接避免了RDD的重复计算导致的资源浪费和占用还提升了RDD的容错性,而且间接提升了分析任务的完成效率,那么为什么又会需要基于checkpoint的容错机制,在什么情况下需要设置checkpoint呢?

对RDD进行checkpoint操作,会将RDD直接存储到磁盘上,而不是内存,从而实现真正的数据持久化。

checkpoint 实际上对RDD lineage(RDD依赖关系图谱)的辅助和重新切割修正,当RDD依赖关系过于冗长和复杂时,即依赖关系已达数十代,多个不同的分析任务同时依赖该RDD lineage多个中间RDD时,并且内存难以同时满足缓存多个相关中间RDD时,可以考虑根据多个不同分析任务依赖的中间RDD的不同,使用checkpoint将该RDD lineage 切分成多个子RDD lineage ,这样每一个子 RDD lineage 都会从各自checkpoint 开始算起,从而实现了相互独立,大大减少了由于过于冗长的RDD lineage 造成的高昂容错成本以及内存资源不足问题。

以下示例为RDD设置检查点(checkpoint)。checkpoint 函数将会创建一个二进制的文件,并存储到checkpoint目录中(checkpoint保存的目录是在HDFS目录中,天然地保证了存储的可靠性),该目录是用SparkContext.setCheckpointDir() 设置的。在checkpoint的过程中,该RDD的所有依赖于父RDD中的信息将全部被移出。对RDD进行checkpoint操作并不会马上被执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值