美文网首页
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对于程序容错的处理

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

  • spark常用参数

    spark-sql \ --master yarn \ --deploy-mode client \ ...

  • Spark 应用程序提交启动之Client模式

    Spark 应用程序提交启动之主线流程 中提到org.apache.spark.deploy.SparkSubmi...

  • SparkStreaming教程

    概要 Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可...

  • SparkStreaming教程

    概要 Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可...

  • SparkStreaming教程

    概要 Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可...

  • SparkStreaming教程

    概要 Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可...

  • Save Mode

    Spark SQL对于save操作,提供了不同的save mode。主要用来处理,当目标位置,已经有数据时,应该如...

  • SparkStreaming

    SparkStreaming是spark的一个子模块,用与快速构建可扩展,高吞吐量,高容错的流处理程序。通过高级A...

  • Cluster deploy mode is currently

    Error: Cluster deploy mode is currently not supported for...

网友评论

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

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