关于MapReduce的Shuffle阶段的磁盘空间需求问题

allspace123 2016-08-12 09:51:22
了解了Shuffle的原理之后有一个疑问:
Shuffle阶段将数据存储于本地磁盘,而非HDFS,如果map阶段产生的中间数据过多,或者reduce收取的数据过多,都可能会造成磁盘空间不足。

map的结果可能不会占用太多磁盘空间,毕竟输入最多是一个HDFS的block size(除非手工改参数),而map产生的结果一般也不会比输入还大,除非算法很特殊。

但reduce就难说了,它需要从所有的map那里抓取属于自己的数据,是不是有可能导致磁盘爆满啊?

...全文
841 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
allspace123 2016-08-16
  • 打赏
  • 举报
回复
如果map的输出都会溢出(spill),那reduce的输入没可能全放在内存里啊...
我的积分呢 2016-08-15
  • 打赏
  • 举报
回复
map的处理后的数据才会写到本地临时目录的,reduce复制map本地临时文件写到内存中去,所以reduce不存在磁盘不足的情况只会存在内存溢出等卡死问题。至于map会不会将磁盘空间卡爆 一般是不会的因为它有一个环形内存,只有将溢出的数据才会写出,所以不用担心。

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧