让我阐述一下我的问题:
我正在使用一个包含主节点和3个工作节点(我的主节点)的集群
节点具有火花上下文。
我已使用存储级别“ DISK_ONLY”将RDD保存到磁盘中。
当我运行spark脚本时,它将一些RDD保存到任何工作程序的硬盘上
节点,现在当我的主计算机出现故障时,它具有火花上下文并且作为
结果也会下降,因此所有DAG信息都会丢失。
现在,我必须重新启动主节点,以建立Spark上下文,并且
再次运行。
现在的问题是-我可以以此保留所有保存的RDD了
反弹(重新启动主节点和spark上下文守护程序)?因为一切都是
重新启动。
答案 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方法。