1、应⽤场景:当spark应⽤程序特别复杂,从初始的RDD开始到最后整个应⽤程序完成有很多的步骤,⽽且整个应⽤运⾏时间特别长,这种情况下就⽐较适合使⽤checkpoint功能。
2、原因:对于特别复杂的Spark应⽤,会出现某个反复使⽤的RDD,即使之前持久化过但由于节点的故障导致数据丢失了,没有容错机制,所以需要重新计算⼀次数据。
Checkpoint⾸先会调⽤SparkContext的setCheckPointDIR()⽅法,设置⼀个容错的⽂件系统的⽬录,⽐如说HDFS;然后对RDD调⽤checkpoint()⽅法。之后在RDD所处的job运⾏结束之后,会启动⼀个单独的job,来将checkpoint过的RDD数据写⼊之前设置的⽂件系统,进⾏⾼可⽤、容错的类持久化操作。
检查点机制是我们在spark streaming中⽤来保障容错性的主要机制,它可以使spark streaming阶段性的把应⽤数据存储到诸如HDFS等可靠存储系统中,以供恢复时使⽤。具体来说基于以下两个⽬的服务:
控制发⽣失败时需要重算的状态数。Spark streaming可以通过转化图的谱系图来重算状态,检查点机制则可以控制需要在转化图中回溯多远。提供驱动器程序容错。如果流计算应⽤中的驱动器程序崩溃了,你可以重启驱动器程序并让驱动器程序从检查点恢复,这样spark streaming就可以读取之前运⾏的程序处理数据的进度,并从那⾥继续。
参考:http://www.cnblogs.com/dt-zhw/p/5664663.html

说说检查点 checkpoint 的意义

分布式编程中经常需要做检查点,即将某个时机的中间数据写到存储中