【问题标题】:What is the difference between FAILED AND ERROR in spark application statesspark应用程序状态中的FAILED和ERROR有什么区别
【发布时间】:2016-08-26 17:54:08
【问题描述】:

我正在尝试创建已提交 Spark 应用程序的状态图。当应用程序被视为失败时,我有点迷失了。

状态来自这里:https://github.com/apache/spark/blob/d6dc12ef0146ae409834c78737c116050961f350/core/src/main/scala/org/apache/spark/deploy/master/DriverState.scala

【问题讨论】:

    标签: apache-spark driver scheduling distributed-computing bigdata


    【解决方案1】:

    这个阶段非常重要,因为说到大数据,Spark 很棒,但是让我们面对现实吧,我们还没有解决问题!


    当一个任务/作业失败时,Spark 会重新启动它(回想一下,Spark 提供的主要抽象 RDD 是一个 Resilient 分布式数据集,这不是我们在这里寻找的,而是会给出直觉)。

    我使用 Spark 1.6.2,我的集群重新启动作业/任务 3 次,此时它被标记为 FAILED。

    例如,我最近的一项工作必须重新开始整个阶段:

    在集群/应用程序中,可以看到尝试 ID,这里是应用程序的第三次也是最后一次尝试:

    如果该尝试被标记为 FAILED(无论出于何种原因,例如内存不足、DNS 错误、GC 分配内存、磁盘故障、节点没有响应 4 次心跳(可能已关闭)等),然后 Spark 重新启动作业。

    【讨论】:

    • 所以本质上这意味着失败的作业可以重新启动可配置的次数......此时它可能处于 RELAUNCHING 阶段
    • @Pangea 当 Spark 注意到例如第一次尝试失败时,它将继续并安排重新启动作业。但是,这不会立即完成!例如,我的工作有 2000 个执行者。一旦第一次尝试失败,它将失去所有它的执行者和它已经完成的所有进度。这意味着,第二次尝试,将从头开始,这意味着作业被接受,但必须等待调度程序处于 RUNNING 状态(在那个阶段我们的作业处于 RELAUNCHING 阶段,即进程Spark 必须为第二次尝试奔跑做好准备
    • 好像没有接受状态github.com/apache/spark/blob/…
    • @Pangea 作业被接受,而不是驱动程序。但无论如何,如果你愿意,你可以忽略它(我的意思是它可能取决于调度程序)。检查它here。一般来说,ACCEPTED 表示作业在集群上被接受,但还没有运行。
    • 谢谢。如果您能帮助我从 stanalone 调度程序完成此状态图,那就太好了。我可以将它添加到您想要贡献的 gitbook 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多