gpt4 book ai didi

apache-spark - 广泛依赖的 Spark 容错

转载 作者:行者123 更新时间:2023-12-02 03:05:00 27 4
gpt4 key购买 nike

我有兴趣了解 Spark 如何实现容错。在他们的paper他们描述了他们如何为“狭窄的依赖关系”做这件事,比如相当简单的 map 。但是,我没有说明如果节点在像排序操作这样的广泛依赖性之后崩溃时他们会做什么。我唯一能找到的是:

In contrast, in a lineage graph with wide dependencies, a single failed node might cause the loss of some partition from all the ancestors of an RDD, requiring a complete re-execution.

这还不足以理解正在发生的事情。

排序后,如果不存储一些额外的信息,就无法判断存储在崩溃节点上的数据来自何处。因此,如果在排序后发生崩溃,是重新执行整个沿袭还是有某种机制可以减少计算开销?那么其他广泛的依赖性呢?

最佳答案

RDD 依赖实际上是指分区以及它们是如何从其他 RDD 的分区创建的。

wide dependency 意味着创建分区所需的数据是从多个分区(来自相同或不同的 RDD)中获取的。每个分区分配一个执行器。

现在假设,我们正在连接两个分别具有 nm 分区的 RDD R1 和 R2。此外,为了简单起见,我们假设 R1 和 R2 都是由(n x m) 不同的执行者计算的。我们将通过连接 R1 和 R2 创建第三个 RDD R3。

当计算 R3 时,假设包含 x 个执行器(在 (n x m) 个执行器中)的节点由于某种原因失败。 它不会影响其余的执行者及其在其他节点上的数据。

只有那些 R3 中的分区 应该从那些失败的 x 执行者的数据中创建才会受到影响。并且只有那些 x 分区被重新创建

提供了更详细的视觉解释 here

更新:关于 Spark 缓存下面的 URL 应该可以帮助您了解 Spark 的整个持久化特性

关于apache-spark - 广泛依赖的 Spark 容错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43467598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com