hadoop MapReduce shuffle 基础问题

新手上路,请多包涵

看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不是更节约磁盘吗?

谢谢

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题