美文网首页
Spark deploy mode对于程序容错的处理

Spark deploy mode对于程序容错的处理

作者: 望山不是山 | 来源:发表于2018-12-13 09:33 被阅读0次

    目的

    为了检验spark在yarn中运行时任务发生异常时,程序的容错是如何处理的。

    背景

    在spark程序中,task有失败重试机制(根据 spark.task.maxFailures 配置,默认是4次),当task执行失败时,并不会直接导致整个应用程序down掉,只有在重试了 spark.task.maxFailures 次后任然失败的情况下才会使程序down掉。另外,spark on yarn模式还会受yarn的重试机制去重启这个spark程序,根据 yarn.resourcemanager.am.max-attempts 配置(默认是2次)。
    即使spark程序task失败4次后,受yarn控制重启后在第4次执行成功了,一切都好像没有发生,我们只有通过spark的监控UI去看是否有失败的task,若有还得去查找看是哪个task由于什么原因失败了。基于以上原因,我们需要做个task失败的监控,只要失败就带上错误原因通知我们,及时发现问题,促使我们的程序更加健壮。

    测试结果

    spark 2.0.0

    发布模式 程序模式 处理
    yarn-client batch 程序发生异常会task重试4次后结束运行,但在yarn界面程序FinalStatus为成功
    yarn-client stream 程序发生异常task重试4次但不会结束运行,程序继续执行
    yarn-cluster batch/stream 程序发生异常task重试4次后,会根据yarn的配置程序重试次数重启程序,超过 重试次数依旧失败会退出程序,在yarn界面程序FinalStatus为FAILD
    standalone-cluster/client stream 程序发生异常task重试4次后结束运行,Driver状态FAILD,Application状态显示FINISHED(前提是没有访问过application UI界面,若访问过UI executor抛错则不会引起程序的结束,应该是spark2.0的bug)

    本版本建议执行方式 yarn-cluster

    spark 2.3.0

    发布模式 程序模式 处理
    yarn-client stream 异常重试4次,程序自动退出FinalStatus为成功(前提是没有访问过application UI界面,若访问过UI executor抛错则不会引起程序的结束)
    yarn-cluster stream 异常重试4次,会根据yarn的配置程序重试次数重启程序,超过 重试次数依旧失败会退出程序,在yarn界面程序FinalStatus为FAILD
    standalone-cluster stream 异常重试4次,程序自动退出Driver状态FAILD
    standalone-client stream -

    本版本建议执行方式 yarn-cluster standalone-cluster

    相关文章

      网友评论

          本文标题:Spark deploy mode对于程序容错的处理

          本文链接:https://www.haomeiwen.com/subject/arqvhqtx.html