如果我的 driver 或执行程序在 运行 和 spark-application 时在 Spark 中丢失,会发生什么情况?

What will happen if my driver or executor is lost in Spark while running an spark-application?

三道相似题:

我的一个遗嘱执行人丢了怎么办

如果我的 driver 丢失了会怎样。

阶段失败时会发生什么。

以上所有情况,都可以恢复吗?如果是,如何恢复。 “SparkConf”中是否有任何选项可以防止这些设置?

谢谢。

Spark 使用作业调度。 DAGScheduler 由集群管理器(Standalone、YARN、Mesos)实现,您的集群管理器可以重新调度失败的任务。

例如,如果您使用 YARN,请尝试调整 spark.yarn.maxAppAttemptsyarn.resourcemanager.am.max-attempts。此外,您可以尝试使用 HTTP API 手动跟踪作业:https://community.hortonworks.com/articles/28070/starting-spark-jobs-directly-via-yarn-rest-api.html

如果你想从逻辑错误中恢复,你可以尝试检查点(将记录保存到 HDFS 以备后用):https://mallikarjuna_g.gitbooks.io/spark/content/spark-streaming/spark-streaming-checkpointing.html。 (对于非常长且重要的管道,我建议将数据保存在普通文件中而不是检查点中!)。

配置高可用集群是一项比在 SparkConf 中调整 1 设置更复杂的任务。您可以尝试实现不同的场景,并 return 提出更详细的问题。作为第一步,您可以尝试 运行 YARN 上的所有内容。