Apache spark 广泛依赖的Spark容错
我很想知道Spark是如何实现容错的。在他们的文章中,他们描述了如何为“狭隘的依赖关系”做这件事,比如map,它是相当直接的。但是,我不知道如果一个节点在像排序操作这样的广泛依赖性之后崩溃,它们会做什么。我唯一能找到的是: 相反,在具有广泛依赖关系的沿袭图中,单个失败节点可能会导致RDD所有祖先的某些分区丢失,需要完全重新执行 这还不足以理解发生了什么Apache spark 广泛依赖的Spark容错,apache-spark,distributed-computing,fault-tolerance,Apache Spark,Distributed Computing,Fault Tolerance,我很想知道Spark是如何实现容错的。在他们的文章中,他们描述了如何为“狭隘的依赖关系”做这件事,比如map,它是相当直接的。但是,我不知道如果一个节点在像排序操作这样的广泛依赖性之后崩溃,它们会做什么。我唯一能找到的是: 相反,在具有广泛依赖关系的沿袭图中,单个失败节点可能会导致RDD所有祖先的某些分区丢失,需要完全重新执行 这还不足以理解发生了什么 排序之后,如果不存储一些附加信息,就无法判断崩溃节点上存储的数据来自何处。因此,如果在排序之后发生崩溃,是重新执行整个沿袭,还是有某种机制减少计
排序之后,如果不存储一些附加信息,就无法判断崩溃节点上存储的数据来自何处。因此,如果在排序之后发生崩溃,是重新执行整个沿袭,还是有某种机制减少计算开销?那么其他广泛的依赖关系呢?RDD依赖关系实际上是分区,以及如何从其他RDD的分区创建它们 一个广泛的依赖关系意味着创建一个分区所需的数据是从多个分区(从相同或不同的RDD)获得的。 每个分区都分配了一个执行器 现在假设,我们将连接两个分别有n个和m个分区的RDDR1和R2。此外,为了简单起见,让我们假设R1和R2都是由(nx m)不同的执行器计算的。 我们将通过加入R1和R2来创建第三个RDD R3 在计算R3时,假设包含x个执行器(n x m个执行器中的)的节点由于某种原因失败它不会影响其余的执行者及其在其他节点上的数据。 只有R3中那些应该从失败的x executor数据创建的分区受到影响。并且仅重新创建这些x分区 可提供更详细的视觉解释 更新:关于Spark缓存 下面的URL将帮助您了解Spark的整个持久性功能