栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark 容错

Spark 容错

1.driver宕机
(1)如果job运行在client:程序直接挂了

(2)如果job运行在cluster:

-》spark on standalone/mesos:通过spark-submit的参数–supervise可以指定当driver宕机的时候,在其他的节点上重新恢复
-》spark on yarn:自动恢复四次

2.executor宕机
比如executor进程所在机器(worker)宕机、Executor和Driver之间通信超时。则Driver直接把坏掉的executor从Driver列表中移除,然后重新向Resourcemanager/master申请资源,自动在work或者NodeManager上重新启动一个executor重新执行任务

3.task执行失败
Task任务执行过程中产生异常导致Task执行失败,自动进行恢复,最多失败4次
(1)Lineage方式 Task数据恢复/重新运行的机制实质上是RDD的容错机制,即Lineage机制
容错的方式为,当子RDD执行失败的时候,可以直接从父RDD进行恢复操作。
Spark RDD实现基于Lineage的容错机制,基于RDD的各项transformation构成了compute chain,在部分计算结果丢失的时候可以根据Lineage重新恢复计算。
(1)在窄依赖中,在子RDD的分区丢失,要重算父RDD分区时,父RDD相应分区的所有数据都是子RDD分区的数据,并不存在冗余计算。
(2)在宽依赖情况下,丢失一个子RDD分区,重算的每个父RDD的每个分区的所有数据并不是都给丢失的子RDD分区用的,会有一部分数据相当于对应的是未丢失的子RDD分区中需要的数据,整个RDD都要重新计算,这样就会产生冗余计算开销和巨大的性能浪费。所以如果调用链路比较长的话,宽依赖最好做一次Checkpoint。

(2)checkpoint方式 如果Lineage生命线特别长,此时Task执行失败的恢复成本就比较高,需要使用checkpoint和cache来先做缓存,减少执行开销

checkpoint 是把 RDD 保存在 HDFS中, 是多副本可靠存储,所以依赖链就可以丢掉了,就斩断了依赖链, 是通过复制实现的高容错。但是有一点要注意, 因为checkpoint是需要把 job 重新从头算一遍, 最好先cache一下, checkpoint就可以直接保存缓存中的 RDD 了, 就不需要重头计算一遍了, 对性能有极大的提升。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号