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



让我详细说明我的问题:

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

节点具有可用的 Spark 上下文

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

当我运行我的 Spark 脚本时,它会将一些 RDD 保存到任何工作人员的硬盘上

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

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

现在我必须重新启动我的主节点,以便建立火花上下文和

再次运行。

现在的问题是 - 我是否能够保留所有保存的RDD

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

重新 启动。

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

根据

@intellect_dp解释,如果您使用任何集群管理器,例如 - Apache Mesos 或 Hadoop Yarn,那么您需要指定要使用哪种部署模式,">集群模式"或">客户端模式",

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

简短的回答是否定的。 最好故障转移您的主节点。

或者

,或者免费,您可以使用调度程序拆分作业并使用Spark bucketBy方法。

相关内容

最新更新