如果失去火花上下文,我们是否能够保留所有持久的RDD

时间:2019-04-06 04:26:07

标签: apache-spark

让我阐述一下我的问题:

我正在使用一个包含主节点和3个工作节点(我的主节点)的集群

节点具有火花上下文

我已使用存储级别“ DISK_ONLY”将RDD保存到磁盘中。

当我运行spark脚本时,它将一些RDD保存到任何工作程序的硬盘上

节点,现在当我的主计算机出现故障时,它具有火花上下文并且作为

结果也会下降,因此所有DAG信息都会丢失。

现在,我必须重新启动主节点,以建立Spark上下文,并且

再次运行。

现在的问题是-我可以以此保留所有保存的RDD了

反弹(重新启动主节点和spark上下文守护程序)?因为一切都是

重新启动。

3 个答案:

答案 0 :(得分:3)

我认为,在关闭 Spark上下文之后,目前尚无法恢复缓存的RDD。放置和获取RDD块的组件是Spark的 BlockManager 组件。依次使用另一个名为 BlockInfoManager 的组件来跟踪RDD块信息。当 BlockManager 在工作节点中关闭时,它将清除其正在使用的资源。其中之一是 BlockInfoManager ,其中具有包含RDD块信息的HashMap。由于此Map在清理过程中也已清除,因此在下次实例化该映射时,没有任何RDD块被保存在该worker中的信息。因此,它将把该块视为未计算的。

答案 1 :(得分:1)

根据@intellect_dp的说明,例如,如果使用任何群集管理器-Apache Mesos或Hadoop Yarn,则需要指定要使用的部署模式,“ 集群模式”或“ 客户端模式”,

部署模式可以区分驱动程序进程的运行位置。在“集群”模式下,框架在集群内部启动驱动程序。在“客户端”模式下,提交者在群集外部启动驱动程序。

答案 2 :(得分:1)

简短的回答是“否”。最好对主服务器进行故障转移。

或者,您可以选择使用调度程序来拆分工作,并使用Spark bucketBy方法。