2025.2.12(寒假第二十四天)
RDD 的故障恢复与容错机制
学习目标:
理解 RDD 的容错机制。
学习 RDD 的 lineage(血统)机制。
模拟 RDD 的故障恢复过程。
// 创建 SparkContext
val sc = new SparkContext("local[*]", "RDD Fault Tolerance")
// 创建一个 RDD
val data = Array(1, 2, 3, 4, 5)
val distData = sc.parallelize(data)
// 设置 checkpoint 目录
sc.setCheckpointDir("hdfs://localhost:9000/checkpoint")
// 创建一个复杂的 RDD
val squared = distData.map(x => x * x)
val filtered = squared.filter(x => x > 10)
// 保存 RDD 的状态
filtered.checkpoint()
// 模拟节点故障(手动删除某个分区的数据)
// 重新计算 RDD
val recovered = filtered
// 打印恢复后的 RDD 内容
println(recovered.collect().mkString(", ")) // 输出: 16, 25
// 停止 SparkContext
sc.stop()
实验总结:
理解 RDD 的容错机制,基于 lineage 机制的故障恢复。
学会使用 checkpoint 方法保存 RDD 的状态。
模拟故障恢复过程,验证 RDD 的容错能力。