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,可以减少执行开销。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。