Spark shuffle介绍:shuffle data生命周期

网友投稿 877 2022-05-28

shuffle data持久化在磁盘上,如果一直不清理,磁盘容易被撑爆。那shuffle data什么时候会被清理呢。一般来说可以分成3种场景:

1、spark application主动停止,需要清理该application下所属的全部shuffle data。清理流程如下(本文均以未启用external shuffle service,spark 2.x代码为例):

Spark shuffle介绍:shuffle data生命周期

2、application存活,但某个阶段的shuffle data不再需要,可以被删除清理。这里核心是如何判断某个shuffle data不再被需要。spark里是利用java的GC机制来判断某个shuffle是否还需要使用。宽依赖会存在shuffle,在创建ShuffleDependency时会将该对象以弱引用的方式注册在ContextCleaner,然后ContextCleaner周期性检查该弱引用对象是否被GC回收了,如果回收说明该ShuffleDependency对象不再被依赖,即shuffle data不再被需要,可以被清理。为了避免一直未GC导致shuffle不被清理,ContextCleaner也会定期调用system.gc来建议GC。

3、机器异常掉电的情况,application来不及执行主动关闭逻辑进行shuffle清理。这种一般依赖外围的资源管理如yarn的清理机制,或者需要在外围添加周期性检查程序,清理非存活application的所有shuffle数据。

EI企业智能 spark 智能数据 表格存储服务 CloudTable

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2020-12-15:mysql的回滚机制是怎么实现的?
下一篇:Bash脚本教程之启动环境
相关文章