概述:算法
checkpoint的意思就是创建检查点,相似于快照,例如在spark计算里面 计算流程DAG特别长,服务器须要将整个DAG计算完成得出结果,可是若是在这很长的计算流程中忽然中间算出的数据丢失了,spark又会根据RDD的依赖关系从头至尾计算一遍,这样子就很费性能,固然咱们能够将中间的计算结果经过cache或者persist放到内存或者磁盘中,可是这样也不能保证数据彻底不会丢失,存储的这个内存出问题了或者磁盘坏了,也会致使spark从头再根据RDD计算一遍,因此就有了checkpoint,其中checkpoint的做用就是将DAG中比较重要的中间数据作一个检查点将结果存储到一个高可用的地方缓存
代码示例:服务器
object ChickPointDemo { def main(args: Array[String]): Unit = { val conf=new SparkConf().setMaster("local").setAppName("wordcount") val sc=new SparkContext(conf) sc.setCheckpointDir("hdfs://hadoop01:9000/check01") val data=sc.textFile("d://data/word.txt") data.cache() data.checkpoint() val wordcount=data.flatMap {_.split(" ")}.map {(_,1)}.reduceByKey(_+_) wordcount.cache() wordcount.checkpoint() wordcount.foreach{println} } }
总结:Spark的CheckPoint机制很重要,也很经常使用,尤为在机器学习中的一些迭代算法中很常见。好比一个算法迭代10000次,若是不适用缓冲机制,若是某分区数据丢失,会致使整个计算链从新计算,因此引入缓存机制。可是光引入缓存,也不彻底可靠,好比缓存丢失或缓存存储不下,也会致使从新计算,因此使用CheckPoint机制再作一层保证。机器学习
补充:检查目录的路径,通常都是设置到HDFS上oop