Spark学习(六):核心模块之Shuffle详解
1. 核心模块——Shuffle
(1)shuffle的若干介绍:
shuffle 中Map任务产生的结果会根据所设置的partitioner算法填充到当前执行任务所在机器的每个桶中。
1)Reduce任务启动时时,会根据任务的ID,所依赖的Map任务ID以及MapStatus从远端或本地的BlockManager获取相应的数据作为输入进行处理。
2)Shuffle数据必须持久化磁盘,不能缓存在内存。
(2)shuffle有如下两种方式:hash方式,sort方式。
1)hash方式:
hash方式的相关知识点:
1)shuffle不排序,效率高
2)生成MXR个shuffle中间文件,一个分片一个文件
3)产生和生成这些中间文件会产生大量的随机IO,磁盘效率低
4)shuffle时需要全部数据都放在内存,对内存消耗大
5)适合数据量能全部放到内存,reduce操作不需要排序的场景
2)Sort方式:
sort方式的相关知识点:
1)shuffle需要排序
2)生成M个shuffle中间数据文件,一个Map所有分片放到一个数据文件中,外加一个索引文件记录每个分片在数据文件中的偏移量
3)shuffle能够借助磁盘(外部排序)处理庞大的数据集
4)数据量大于内存时只能使用Sort方式,也适用于Reduce操作需要排序的场景
相关推荐
Johnson0 2020-06-08
adayan0 2020-04-17
strongyoung 2020-07-19
Bloddy 2020-06-08
snaillup 2019-11-16
飞鸿踏雪0 2019-11-13
adayan0 2019-10-22
tianhouquan 2015-05-19
shuyun00 2013-12-02
微麦PHP 2019-06-26
yanqianglifei 2019-05-02
mbcsdn 2019-05-02
zilianxiaozhu 2018-09-12
RiverCode 2018-08-20
moneycrazy 2018-12-06
BalaBalaYi 2018-10-19
tansuo 2019-02-04
jimeshui 2019-05-08
小琳子 2015-08-08