hadoop MapReduce shuffle 基础问题

qq_825284867 2019-05-03 11:25:59
看hadoop权威指南7.3shuffle和排序的时候遇到了一些问题,求解.谢谢

1. 假设我有3个reducer.那每个map最后生成的是3个partition,所以是3个文件吗? 比如文件1会复制给reducer1, 文件2会复制给reducer2.....

2. 书上说map有一个环形缓冲区,默认100M,每次达到80%的时候会生成1个spill file溢出文件.那比如我溢出了20次.生成了20个溢出文件.而mapreduce.task.io.sort.factor=10每次最多很10个文件.那最后应该合并成2个没有分区的大文件,怎么与问题1中的3个分区的文件对应起来?

3. combiner在map端的作用时间是溢出文件合并成大文件的时候吗? 另外书上说combiner会在输出文件写到磁盘上之前运行,溢出文件不是已经写到磁盘上了吗? combiner怎么会在会在输出文件写到磁盘上之前运行呢?

4. reducer合并了多个map的输入.得到了几个大文件,为什么入参就可以是key, List<Value>的形式? 这个list是怎么得到的? 如果没有combiner,那文件中的记录还是一条一条的kv,为什么能够得到List?

5. 书上reducer举了一个例子,假设有40个文件,不会在4趟中每次合并10个文件,而是4 + 10 + 10 + 6目的是减小写入磁盘的量.那为什么不是10 + 10 + 10然后最后10个文件直接输入reduce不是更节约磁盘吗?

谢谢
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38440773 2019-05-11
  • 打赏
  • 举报
回复
3.combiner的作用主要是减少shuffle的负担。你四个key进行网络混洗,排序的速度肯定比一个key要快很多,也便于你reducer的处理
qq_38440773 2019-05-11
  • 打赏
  • 举报
回复
2.说实话没看懂你的题目
qq_38440773 2019-05-11
  • 打赏
  • 举报
回复
1.你有多少个reducer,最后就会生成几个文件。map的partition完全是根据它的key来决定的(哈希取模),所以有可能你生成的三个文件只有一两个有数据,这也是有可能的

20,811

社区成员

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

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