对火花RDD容错的误解

Gar*_*auh 5 fault-tolerance distributed-computing apache-spark spark-streaming rdd

很多人说:

Spark不会在hdfs中复制数据.

Spark在DAG图中安排操作.Spark构建RDD谱系.如果RDD丢失,可以在谱系图的帮助下重建它们.因此不需要数据复制,因为可以从谱系图重新计算RDDS.

我的问题是:

如果一个节点出现故障,spark将只重新计算在该节点上丢失的RDD分区,但重新计算过程中所需的数据源来自何处?你的意思是它的父RDD在节点出现故障时仍然存在吗?如果失去一些分区的RDD没有父RDD(如RDD来自火花流接收器)怎么办?

gsa*_*ras 2

如果我们在计算过程中丢失了一些东西怎么办?

  • 信赖 MR 的关键见解!确定性提供安全的重新计算。
  • 跟踪每个 RDD 的“血统”。如果需要,可以从父母那里重新计算。
  • 有趣的是:只需要记录微小的状态就可以重新计算。

    Need parent pointer, function applied, and a few other bits.
    Log 10 KB per transform rather than re-output 1 TB -> 2 TB
    
    Run Code Online (Sandbox Code Playgroud)

来源

子RDD是描述如何从父RDD计算RDD的元数据。阅读更多内容Spark 中的 RDD 依赖是什么?