分享

在mapreduce执行过程中,如何获取每个节点map产生结果的大小

fyz 发表于 2016-11-29 11:12:18 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 11437
如题:在mapreduce执行过程中,想在调度器中获取每个节点(TaskTracker)map输出数据量的大小,不知道哪个函数或者接口可以,查了一下TaskTracker中的方法,发现的都是私有的并且还是获取数量?求大神指导一二,多谢了!

已有(5)人评论

跳转到指定楼层
starrycheng 发表于 2016-11-29 14:29:53
本帖最后由 starrycheng 于 2016-11-29 15:21 编辑

楼主应该使用的hadoop1.x的吧,这个用的很少了。
对于这个中间结果,如果没有reduce的话,它是存在磁盘,但是如果是有reduce的话,这个结果会被拉取
楼主也可以自己统计

Map输出的文件名,分别是file.out和file.out.index

至于统计大小的函数,这个还真没发现。

回复

使用道具 举报

fyz 发表于 2016-11-29 15:37:03
starrycheng 发表于 2016-11-29 14:29
楼主应该使用的hadoop1.x的吧,这个用的很少了。
对于这个中间结果,如果没有reduce的话,它是存在磁盘, ...

这个和版本没有什么关系吧?高版本也有mapreduce,map也会有输出结果产生,我只是想在reduce之前获取map数据。我知道会产生两个文件,但是想省事的轮询每个节点数据,不知道有没有简单的方法,而不是需要自己增加一个线程专门干这个事。谢谢你啊
回复

使用道具 举报

arsenduan 发表于 2016-11-29 16:21:35
fyz 发表于 2016-11-29 15:37
这个和版本没有什么关系吧?高版本也有mapreduce,map也会有输出结果产生,我只是想在reduce之前获取map ...

这恐怕不行,他们之间有逻辑关系的。
对于不同的reduce需要拉取自己的数据。轮询达不到目的。
并且这完全改变了mapreduce机制
回复

使用道具 举报

fyz 发表于 2016-11-29 16:59:24
arsenduan 发表于 2016-11-29 16:21
这恐怕不行,他们之间有逻辑关系的。
对于不同的reduce需要拉取自己的数据。轮询达不到目的。
并且这完 ...

不同的reduce需要拉去自己的数据,那么其中任意一个reduce也需要访问所有的map输出结果,取自己对应的数据,其实也是一种轮询方式,只不过reduce是通过获取mapEvent时间来得到map信息,保存到每一个TaskTracker中。这种方式不会改变原有机制而不会改变它的机制,可能我说的轮询没有标明清楚吧
回复

使用道具 举报

einhep 发表于 2016-11-29 20:06:07
fyz 发表于 2016-11-29 16:59
不同的reduce需要拉去自己的数据,那么其中任意一个reduce也需要访问所有的map输出结果,取自己对应的数 ...

效率提高,就是中间不写到磁盘,那就是使用spark。mapreduce是大师的作品,效率相信已经考虑过了。
如果不是兴趣爱好,不建议去更改框架,这个难度是非常大的。

回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条