Spark shuffle介绍:shuffle data生命周期

举报
小玩一会 发表于 2020/09/07 15:59:22 2020/09/07
9.4k+ 0 0
【摘要】 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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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