spark学习-CheckPoint原理

CheckPoint原理:

1.对于一个复杂的RDD chain,如果中间某些关键的,在后面会多次使用的RDD因节点故障导致持久化数据丢失,可以针对该RDD启动checkpoint机制,实现容错和高可用。

2.checkpoint,先调用SparkContext的setCheckpointDir()方法,设置一个容错的文件系统目录。

3.对RDD调用checkpoint()方法后,在RDD所处的job运行结束后,会启动一个单独的job,将checkpoint过的RDD数据写入之前设置的文件系统目录,进行高可用、容错的类持久化操作。

4.在后面使用RDD时,即使持久化的数据不小心丢失了,还是可以从它的checkpoint文件中直接读取出来,而不需要重新计算。(CacheManager来实现这个操作)

5.对RDD调用checkpoint()方法之后,它就接收RDDCheckpointData对象的管理,RDDCheckpointData对象会负责将调用了checkpoint()方法的RDD状态设置为MarkedForCheckpoint。

6.RDD所在job运行结束后,会调用job中最后一个RDD的doCheckpoint()方法,该方法会沿着finalRDD的lineage向上查找,将标记MarkedForCheckpoint的RDD标记为CheckpointingInProgress。

7.启动一个单独的job,将lineage中标记为CheckpointingInProgress的RDD进行checkpoint操作。也就是将其数据写入之前设置的checkpoint文件系统目录中。

8.RDD数据checkpoint后,会改变RDD的lineage,会清除掉RDD所有的依赖RDD,并强行将其父RDD设置为一个CheckpointRDD,并且RDD状态变成Checkpointed。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值