分享

MapReduce设置reduce任务为0运行结果解析

本帖最后由 轩辕依梦Q 于 2015-5-31 17:45 编辑


最近在学习mapreduce的shuffle机制,讲解的很多,但是如果没有reduce运行会怎么样的结果,并没有找到相关的案例,所以自己做了个测试,把结果分享一下,以wordcount为例,先来大致总结下分析的结果:
如果设置reducer任务数为0,map端不会执行combiner,sort,merge操作,会直接输出无序结果(读一行,输一行),输出的文件数量,与map task的数量匹配(一个Input split对应一个map task)。


wordcount-1.png
wordcount main方法中的设置,设置有combiner,reduce任务为0.


wcout.png
输入参数的三个文件,map的结果输出为三个文件,而且并没有对单词排序和combiner.



已有(6)人评论

跳转到指定楼层
langke93 发表于 2015-5-31 18:02:56
回复

使用道具 举报

evababy 发表于 2015-6-1 10:20:12
如果只想让combiner运行可以通过
job.setCombinerClass(XX.class);
//job.setReducerClass(XX.class);
//job.setNumReduceTasks(0);
由于combiner底层是reducer所以combiner的执行结果也把结果输出到一个文件中
回复

使用道具 举报

轩辕依梦Q 发表于 2015-6-3 09:31:26

昨天跟踪了一下MapTask的源码,源码还是最能说明问题的,当设置reduce任务为0时,代码走的是直接输出的逻辑,这里的输出不会经过缓存,直接输出到磁盘中。
只有当reduce任务数大于0时,才会执行正常的分区,排序等逻辑
12.jpg
回复

使用道具 举报

Alkaloid0515 发表于 2015-6-3 09:45:37
回复

使用道具 举报

轩辕依梦Q 发表于 2015-6-3 22:28:45
回复

使用道具 举报

轩辕依梦Q 发表于 2015-6-4 00:02:47
Alkaloid0515 发表于 2015-6-3 09:45
敢问楼主是如何调试的,有没有文章推荐下

http://www.aboutyun.com/thread-12705-1-1.html

这里是远程调试mapreduce,可以看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条