我理解工作节点是如何容错的,但是如果你的驱动程序因某些意外原因而崩溃会怎么样? (掉电/记忆问题等)。
我想你会失去所有的工作,因为读取结果的代码不再运行,或Spark是否知道如何重新启动它?如果是这样的话?
答案 0 :(得分:6)
正如@zsxwing所指出的,这取决于你如何运行你的驱动程序。除了在yarn中运行之外,您还可以使用集群的部署模式运行您的作业(这是spark-submit的参数)。在Spark Streaming中,您指定--supervise,Spark将为您重新启动作业。详细信息位于Spark Streaming Guide。
答案 1 :(得分:2)
是的,你可以重启spark应用程序。 有一些特定于正在使用的集群管理器的选项。例如,对于具有集群部署模式的Spark独立集群,您还可以指定 - supervise ,以确保驱动程序在失败且退出代码为非零时自动重新启动。要枚举所有可用于spark-submit的选项,请使用--help:
运行它在群集部署模式下使用监督
在Spark独立群集上运行./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
/path/to/examples.jar \
1000
答案 2 :(得分:2)
我们可以使用zookeeper和本地文件系统来配置高可用性,您可以在官方文档上查看它
http://spark.apache.org/docs/latest/spark-standalone.html#high-availability
答案 3 :(得分:0)
根据Spark文档: -
Spark Standalone - 可以提交Spark应用程序驱动程序以在Spark Standalone集群中运行(请参阅集群部署模式),即应用程序驱动程序本身在其中一个工作节点上运行。此外,可以指示独立集群管理器监督驱动程序,如果驱动程序由于非零退出代码而失败,或者由于运行驱动程序的节点故障,则重新启动它。有关详细信息,请参阅Spark Standalone指南中的集群模式和监督。
所以--supervise只适用于独立群集模式,如果您的应用程序是在Yarn Cluster模式下提交的,那么yarn将处理mapred-site.xml中mapreduce.am.max-attempts属性中配置的Driver重启因此,您的代码应该是这样的,它将删除输出目录并从头开始,否则将失败,输出目录的错误已经存在。