CheckPoint機制

概述:算法

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

相關文章
相關標籤/搜索