据我所知,reduce任务有三个阶段。
shuffle、sort和实际reduce调用。
所以通常在hadoop作业的输出中,我们会看到类似的东西,map 0%reduce 0%map 20%reduce 0%。Map90%减少10%。
因此,我假设reduce任务在所有Map完成之前启动,并且此行为由慢启动配置控制。
现在我还不明白什么时候会调用reducer的setup方法。
在我的用例中,我有一些文件要在setup方法中解析。文件大小约为60mb,是从分布式缓存中提取的。在解析文件时,来自配置的另一组数据可以更新刚刚解析的记录。在解析和可能的更新之后,该文件存储在hashmap中,以便快速查找。所以我希望这个方法能尽快被调用,可能是在Map者还在做他们的事情的时候。
有可能这样做吗?或者这已经发生了?
谢谢
2条答案
按热度按时间xiozqbni1#
正如hadoop文档中所解释的,
setup()
方法在任务开始时调用一次。它应该用于示例化资源/变量或读取可配置参数,而这些参数又可以用于reduce()
方法。把它想象成一个构造器。下面是一个示例:
eblbsuwk2#
Setup
在能够从流中读取第一个键/值对之前调用。在所有Map程序运行并完成给定reducer分区的所有合并之后,这是有效的。