Spark shuffle介绍:shuffle data生命周期

举报
小玩一会 发表于 2020/09/07 15:59:22 2020/09/07
【摘要】 shuffle data持久化在磁盘上,如果一直不清理,磁盘容易被撑爆。那shuffle data什么时候会被清理呢。一般来说可以分成3种场景:1、spark application主动停止,需要清理该application下所属的全部shuffle data。清理流程如下(本文均以未启用external shuffle service,spark 2.x代码为例):2、applicatio...

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

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


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数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。