最近我读到一篇论文,提出了从DNA数据中挖掘最大连续模式的算法。所提出的方法听起来很有趣,它使用了以下MapReduce模型。map->map->reduce->reduce。也就是说,执行第一映射相位,并且将其输出输入到第二相位映射。第二相位映射的输出被输入到第一相位减少。第一相位减少的输出被输入到第二相位减少,并且最终结果被刷新到HDFS中。虽然这看起来是一个有趣的方法,但论文没有提到他们是如何实现的。我的问题是,你是如何实现这种MapReduce链接的?
在Hadoop中,据我所知,到目前为止,您还无法做到这一点。
一种方法可以是使用ChainMap来进行映射->映射->减少部分。然后,将此作业的结果发送到另一个作业,并将映射器设置为IdentityMapper,将reducer设置为您所拥有的第二个相位reducer。
我认为有两种方法可以处理您的情况:
-
将两个地图功能代码集成到一个具有两个阶段的地图任务中。使用与映射相同的方法减少任务。
-
将map map reduce reduce进度划分为两个作业:将第二个map任务类型转换为reduce任务后,将两个map作为第一个Hadoop作业;在将第一个reduce任务转换为map后,两个reduces作为第二个Hadoop作业。如果提交一些依赖于其他作业的Hadoop作业,您可以使用Oozie来处理Hadoop工作流。
请阅读有关TEZ的信息。M->M->R->R->R任何组合都支持