Spark

image-20221027122547529

image-20221027113347528

后续算法会反复使用link3的数据

image-20221028112009189

image-20221028113302777

Narror Dependency: 只查看本地的数据。处理的数据和其他人不相关,是一条链

相比MR,这里不写中间文件,中间数据是以内存形式保存的。

Wide Tranfromation: 需要查看所有机器上的数据。

bucket: Narror的最终结果储存在bucket里,供Wide Transformation读取使用。

在执行前先生成lineage graph, 可以优化,比如distinct完以后,数据就已经按照key分区里,GroupByKey就不需要Wide Tranformation。

falut tolerance

HDFS本身容错

image-20221028144346081对于Narror Dependency, 可以把出错的任务交给别人

队友Wide Dependency,

image-20221028144343518

由于Spark不会去保存之前做完的Tranformation的数据,假如到最后的时候,某个worker崩溃了,由于任务包含Wide Dependency,所以依赖其他work的执行的数据,但是他们又没有保存,这时候就相当于整个任务可能要重新做。

对于这个问题,Spark允许设置checkpoint,在对应的检查点,把数据写入HDFS持久化。比如可以在上述第二个过程(Wide Dependency之前)设置一个checkpoint。

Q.E.D.