gpt4 book ai didi

apache-spark - Spark如何从故障节点恢复数据?

转载 作者:行者123 更新时间:2023-12-04 04:06:20 25 4
gpt4 key购买 nike

假设我们有一个 RDD,它被多次使用。因此,为了一次又一次地保存计算,我们使用 rdd.persist() 方法持久化了这个 RDD。

所以当我们持久化这个 RDD 时,计算 RDD 的节点将存储它们的分区。

那么现在假设,包含这个 RDD 持久分区的节点失败了,那么会发生什么? Spark 如何恢复丢失的数据?有没有复制机制?还是其他什么机制?

最佳答案

当您执行 rdd.persist 时,rdd 不会具体化内容。它会在您对 rdd 执行操作时执行。它遵循相同的惰性求值原则。

现在 RDD 知道它应该在哪个分区上运行以及与之关联的 DAG。使用 DAG,它完全能够重新创建物化分区。

因此,当一个节点出现故障时,驱动程序会在其他某个节点中生成另一个执行程序,并为它提供它应该在其上工作的数据分区以及在闭包中与其关联的 DAG。现在有了这些信息,它可以重新计算数据并将其具体化。

同时,RDD 中缓存的数据不会在内存中包含所有数据,它必须从磁盘获取丢失节点的数据将花费更多时间。

在复制方面,是的 spark 支持内存复制。持久化时需要设置 StorageLevel.MEMORY_DISK_2 。

rdd.persist(StorageLevel.MEMORY_DISK_2)

这确保数据被复制两次。

关于apache-spark - Spark如何从故障节点恢复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47711940/

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