-
传统的容错机制有两种:
1.设计检查点
2.记录数据的更新 -
在Spark中有宽依赖和窄依赖问题:
窄依赖:父RDD的分区只能被一个子RDD所依赖
宽依赖:父RDD的分区被多个RDD所依赖
窄依赖,如果出错,则只需要重新计算其依赖的父RDD中的一个分区的数据即可,进行恢复
宽依赖,如果出错,则需要将父RDD中的所有分区都进行计算,才能进行数据恢复,而且在父RDD恢复重新计算的时,有的数据会被其他的子RDD所依赖,但是这些子RDD并没有出错,这样就出现的数据冗余计算了。
所以,在宽依赖中,对于lineage太长的,可以做中间阶段进行设置检查点,如果出现错误,则可以直接从检查点中进行恢复数据,而不用从父RDD的全部分区重新计算,设置检查点机制,可以减少很多资源开销。
网友评论