开发者社区> 问答> 正文

Spark的高可用和容错是什么意思?

Spark的高可用和容错是什么意思?

展开
收起
游客ahv54x37wvm7u 2021-12-13 20:01:21 884 0
1 条回答
写回答
取消 提交回答
  • Spark 应用程序的高可用性主要包含两个部分:集群环境的高可用以及应用程序的容错特性;集群环境的高可用,主要由集群框架来控制,比如 spark on yarn 模式下的 ResourceManager 的 HA、Spark Standalone 模式下的 Master HA 等特性的设置保障集群的高可用性;至于应用程序的容错需要考虑应用的各个组成部分的容错。

    spark 应用程序执行过程中,一般存在以下失败的情况:

    Driver 集成宕机:Driver 运行机器宕机、Driver 程序运行过程中异常导致宕机 Executor 进程宕机:Executor 所在的work 宕机,Exector 和 Driver 通信超时 Task 执行失败:task 执行过程发生异常导致失败 Driver 进程宕机解决方案:

    监控机器机器是否存活,如果机器宕机,重启服务机器和 spark 集群 通过 spark job 的 history 服务监控应用是否执行成功,如果执行失败,通过开发人员重启服务即可 SparkStreaming 中,重启spark应用后,可通过 checkpoint 进行job数据恢复 Executor 宕机解决方案:选择一个work 节点重启Executor 进程,Driver 重新分配任务

    Task 执行失败解决方案:

    Spark 会自动进行 task 重试机制,如果某个 task 失败重试次数超过3次(spark.task.maxFailures)后,当前job 执行失败;local 模式默认不启用 task 重试机制 Task 数据恢复/重新运行的机制实际上是 RDD 容错机制,即 Lineage 机制,RDD的 Lineage 机制记录的是粗粒度的特定数据的 Transformation 操作行为。当这个 RDD 的部分数据丢失时,它可以通过 lineage 获取足够的信息来重新运算和恢复丢失的数据分区;该机制体现在RDD上就是RDD依赖特性 如果 rdd 的 lineage 的生命线特别长,此时某些 task 执行失败的恢复成本就会比较高,那么可以采用检查点或缓存的方式将数据冗余下来,当检查点/缓存点之后的rdd的task出现异常的时候,可以直接从检查点重新构建lineage,可以减少执行开销。

    2021-12-13 20:01:43
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载