cache 和 checkpoint 的区别

首先要知道实现的原理和使用的场景 catche 的就是将共用的或者重复使用的 RDD 按照持久化的级别进行缓存 checkpoint 的是将业务场景非常长的逻辑计算的中间结果缓存到 HDFS 上,它的实现原理是: 首先找到 stage 最后的 finalRDD,然后按照 RDD 的依赖关系进行回溯,找到使用了 checkPoint 的 RDD 然后标记这个使用了 checkPoint 的 RDD 重新的启动一个线程来将 checkPoint 之前的 RDD 缓存到 HDFS 上面最后将 RDD 的依赖关系从 checkPoint 的位置切断知道了实现的原理和使用场景后我们就很容易的知道了 catch 和 checkpoint 的区别了。

checkpoint检查点的说明
如果依赖血缘关系过长,容错成本会很高,可以设置checkpoint检查点存储RDD中间结果。
checkpoint检查点可以将RDD中间结果存储到HDFS等高可用存储介质中。
checkpoint会切断原有血缘关系。
为了保证checkpoint的数据可靠性,程序在执行时会从血缘关系的最开始执行一遍,所以一般和cache配合使用,以提高效率。
checkpoint同样也是遇到action算子才会执行。


cache缓存的说明
RDD通过调用cache方法将前面的计算结果缓存到内存或磁盘,默认缓存到JVM内存中。
如果后面的计算还有需要此RDD的计算结果,可以直接从缓存中获取,而不用重新计算。
cache缓存不会切断原有血缘关系,只会增加血缘关系。
cache不会立即执行,当第一次遇到action算子时才会真正执行。
cache缓存不管存储到内存还是存储到磁盘,都会随着程序执行结束而销毁。

了解更多大数据相关面试问题欢迎关注小编!

上一篇:昨天面试别人说他熟悉Flink,结果我问了他Flink是如何实现exactly-once语义的?


下一篇:Apache Flink状态管理和容错机制介绍