===== 窄依赖 ===== 父分区对应一个子分区 {{:pasted:20151102-220254.png}} 如果RDD 2的partition2失效,需要依赖RDD 1的partition 2,3进行重算 ===== 宽依赖 ===== 父分区对应多个子分区(父分区partition1对应子分区的partition1,2) {{:pasted:20151102-215037.png}} 如果RDD 2的partition2失效,需要依赖RDD 1的partition 1,2,3进行重算。但是partition 1中有一部分数据对RDD 2的partition2是无效的(那一部分用来生成RDD 2的partition1了)。可见相比窄依赖,宽依赖总是会计算额外的无效数据,所以宽依赖重做比窄依赖重做更废资源 ===== checkpoint ===== spark是靠lineage重做机制来容错的,如果lineage过长,会导致重做成本过高。这个时候可以引入checkpoint机制(checkpoint的本质是将RDD写入磁盘做检查点)当一个RDD所有的操作完成之后,可对该RDD做checkpoint操作。checkpoint完成之后会删除所有对该RDD的祖先依赖。且失败重做时也只需要从检查点开始即可。