Yarn集群模式下Spark App如何处理Driver异常终止
How is abnormal Driver termination handled for a Spark App in Yarn cluster mode
我们将 AWS EMR 用于我们的 Spark 作业。我们所有的作业都是在 yarn 集群模式下提交的,因此驱动程序将 运行 在其中一个集群节点中。我们对主节点使用按需节点,对核心节点使用现场实例。现在,虽然我们几乎总是选择中断率 < 5% 的实例,但有时我们的集群节点中有很大一部分会过早终止(可能是因为更高的需求)。
所以,我想知道,在上面的情况下,如果包含驱动程序进程的节点挂掉了会怎样?在这种情况下,火花作业是否有恢复的机会?还是这份工作永远消失了?
Spark 驱动程序是单点故障,因为它保存 运行ning 应用程序的所有集群状态。
在实践中,非临时存储可用于在昂贵的昂贵转换后检查点批处理应用程序。话虽如此,在这种情况下尝试重新开始是可以做到的,但我仔细研究了一下,至少可以说是相当困难。前段时间以我的名义问过这样一个问题,大家可以找找看。我很技术,但感觉:天哪,多么辛苦。
所以,恢复意味着滚动你自己的东西,或者接受重新运行。自从我上次评估 EMR 以来,我看到驱动程序可以 运行 在 Master 上并且可以进行故障转移,但据我所知,这不是一回事,也不是你想要的。
EMR 对 Yarn 中的 CORE 节点进行了节点分级。您的 spark 驱动程序/应用程序主机仅在 CORE 节点中创建。 HDFS 也只驻留在 CORE 节点中。
因此,为了以最佳方式处理您的情况,您可以考虑同时使用 CORE 和 TASK 组。
你可以做些什么来解决这个问题 -
- 硕士:点播
- 核心:点播。最小实例数可以是 1。
- 任务:使用最小 EBS 量进行自动缩放的 Spot。在这种情况下,最小实例数可以为 0。
这将降低您的成本,同时确保包含驱动程序进程的节点永不停机。
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html
我们将 AWS EMR 用于我们的 Spark 作业。我们所有的作业都是在 yarn 集群模式下提交的,因此驱动程序将 运行 在其中一个集群节点中。我们对主节点使用按需节点,对核心节点使用现场实例。现在,虽然我们几乎总是选择中断率 < 5% 的实例,但有时我们的集群节点中有很大一部分会过早终止(可能是因为更高的需求)。
所以,我想知道,在上面的情况下,如果包含驱动程序进程的节点挂掉了会怎样?在这种情况下,火花作业是否有恢复的机会?还是这份工作永远消失了?
Spark 驱动程序是单点故障,因为它保存 运行ning 应用程序的所有集群状态。
在实践中,非临时存储可用于在昂贵的昂贵转换后检查点批处理应用程序。话虽如此,在这种情况下尝试重新开始是可以做到的,但我仔细研究了一下,至少可以说是相当困难。前段时间以我的名义问过这样一个问题,大家可以找找看。我很技术,但感觉:天哪,多么辛苦。
所以,恢复意味着滚动你自己的东西,或者接受重新运行。自从我上次评估 EMR 以来,我看到驱动程序可以 运行 在 Master 上并且可以进行故障转移,但据我所知,这不是一回事,也不是你想要的。
EMR 对 Yarn 中的 CORE 节点进行了节点分级。您的 spark 驱动程序/应用程序主机仅在 CORE 节点中创建。 HDFS 也只驻留在 CORE 节点中。 因此,为了以最佳方式处理您的情况,您可以考虑同时使用 CORE 和 TASK 组。 你可以做些什么来解决这个问题 -
- 硕士:点播
- 核心:点播。最小实例数可以是 1。
- 任务:使用最小 EBS 量进行自动缩放的 Spot。在这种情况下,最小实例数可以为 0。
这将降低您的成本,同时确保包含驱动程序进程的节点永不停机。
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html