分布式数据集的容错
方式:1)数据检查点:会发生拷贝,浪费资源
2)记录数据的更新:默认方式。在部分计算结果丢失时,只需要根据这个Lineage重算即可。每次更新都会记录下来,比较复杂且比较消耗性能
特点:Spark选择记录更新的方式
Spark的容错机制
对应:RDD的容错机制
分类:1)Lineage机制
2)Checkpoint机制
Lineage机制
含义:RDD的Lineage记录的是粗颗粒度的特定数据Transformation操作行为
特点:1)当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区
2)因为这种粗颗粒的数据模型,限制了Spark的运用场合,所以Spark并不适用于所有高性能要求的场景,但同时相比细颗粒度的数据模型,也带来了性能的提升
依赖
别称:依赖关系
含义:RDD每一个转换操作都会生成一个新的RDD,RDD之间形成如流水线一样的前后依赖关系
分类:窄依赖、宽依赖
对应:RDD的dependencies()接口(getDependencies方法)
作用:用来解决数据容错的高效性
窄依赖
别称:Narrow Dependency
含义:父RDD中的分片具体交给哪个唯一的子RDD
对应:一对一或多对一
特点:无Shuffle操作
分类:map、filter、union
宽依赖
别称:Shuffle Dependency、Wide Dependency
含义:多个子RDD的分片会依赖同一个父RDD分片,或者说同一个父RDD的分片都有多个子RDD的分片使用
对应:一对多
特点:有Shuffle操作
分类:reduceByKey、groupByKey、distinct、repartition、join
Checkpoint容错机制
基础:Lineage
含义:通过CheckPoint进行容错
作用:把内存中的变化刷新到持久存储,斩断依赖链
特点:checkpoint是transformation
举例:sc.setCheckpointDir(“hdfs://master:9000/…”) //在目录创建一个文件夹
rdd.checkpoint //对象面的rdd设置checkpoint