分享

关于MapReduce的执行流程

Riordon 发表于 2014-10-17 08:57:08 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 2 9715
map函数执行最后有类似 context.write(new Text(word), new LongWritable(1));结果是<key,value>对,而到了reduce函数,它接受的第二参数是Iterable<...> ,也就是说,reduce接收到的是经过sort后的吗?在源码hadoop1.x中怎么查找相关代码呢?在Mapper、Reducer类中都有一个run()类似:
我想知道这个run在具体哪调用的呢?
11111.png

已有(2)人评论

跳转到指定楼层
bioger_hit 发表于 2014-10-17 10:05:50
本帖最后由 bioger_hit 于 2014-10-17 15:58 编辑

对于mapreduce执行流程,包括两个一个是map,一个是reduce,相信你已经知道了,这里面还包括分组、shuffer、排序等等,都是按照自己的需求来的,相信很多例子已经看过了。如了解更详细,可参考mapreduce学习指导及疑难解惑汇总





如果想阅读hadoop源码,可按照下面操作
阅读hadoop源码

其中比较常用的
Open Call Hierarchy:
用Open Call Hierarchy可以查看方法的调用层次。如果想知道一个方法在别的什么地方被调用了,这个功能就很好用了,实际中也很常用,比如要重构一个方法时,想 知道他对其它什么地方可能有影响,就可以用这个功能。在方法名上点击右键,选择Open Type Hierarchy即可,快捷键是Ctrl+Alt+H。可以在Call Hierarchy窗口看到方法的调用层次的导航。

Open Type Hierarchy:
用Open Type Hierarchy可以查看类的继承关系,可以在Hierarchy窗口看到继承层次的导航。在方法或类名上点击右键,选择Open Type Hierarchy即可,快捷键是F4。

这里在演示一下:






看到下面代码



介绍完毕,这里在介绍一些其他的跟踪源码的方法:



1、 用Open Declaration可以查看类、方法和变量的声明。这是最常用的一个功能了,如果在要追踪的对象上点右键,选择Open Declaration,可以跳转到其声明的地方。这个功能有个快捷键是F3,当然你也可以按住Ctrl键,鼠标移过去会变成一个小手,单击就可以了。


2、用Open Super Implemention可以查看当前方法在父类中的实现或接口中的声明(前提是该方法是对父类或接口中相应方法的重写),在方法名上点击右键,选择Open Super Implemention即可。

3、 最后介绍一个超级好用的功能,叫Open Implemention,就是可以跳转到某个调用的方法的具体实现的地方去。为什么说这个是超级好用呢?用过Spring的人都知道,现在都提倡面向接 口编程,所以,如果使用Open Declaration来追踪一个方法的调用的话,只会看到该方法在接口中的声明,而看不该方法在具体类中的实现,当然,可以使用Call Hierarchy先得到该方法的整个的调用层次,然后再导航到具体的实现处,但操作有些麻烦了。有了Open Implemention,就可以直接看到实现的代码了,在方法名上点击右键,选择Open Implemention就可以了!只是要享受这个功能,可安装一个Eclipse插件,这里就不在详细介绍了。


更多参考:
如何通过eclipse查看、阅读hadoop2.4源码

回复

使用道具 举报

Riordon 发表于 2014-10-17 11:47:28
bioger_hit 发表于 2014-10-17 10:05
对于mapreduce执行流程,包括两个一个是map,一个是reduce,相信你已经知道了,这里面还包括分组、shuffer ...

很实用,感谢耐心的讲解...
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条