我使用Hadoop开发Map/Reduce。我的驱动程序向Hadoop的作业跟踪器提交一个MapReduce作业(包含Map和Reduce任务)。我有两个问题: a)我的Map或reduce任务是否可以提交另一个MapReduce作业?(使用相同的群集Hadoop和到相同的Job Tracker)。这意味着,我的初学者驱动程序提交一个mapreduce作业,在这个作业中,它的map或reduce任务产生另一个MapReduce作业,并将其提交到相同的集群Hadoop和相同的job Tracker。我认为这是可能的。但我不确定。而且,这是一个很好的解决方案吗?如果不是,我们还能有别的解决方案吗?
b)我们是否可以在MapReduce作业中使用两个映射任务(具有两个不同的函数和一个Reduce任务?非常感谢
发布于 2012-03-16 14:31:36
当然,您可以使用ChainMapper class链接多个地图阶段
还可以使用JobControl类和addDependingJob()方法设置作业之间的依存关系。这可能比让Map Reduce作业派生其他Map Reduce作业更可取,因为这与Map Reduce的基本方法背道而驰,因为这可能会导致您的解决方案不再对单个节点上的硬件故障具有健壮性。
Chuck Lam的Hadoop in Action的第5章对此进行了很好的概述。
发布于 2012-05-09 15:07:30
不,我不认为这是可能的。另一种解决方案是启动单个MapReduce任务,输入为set1和set2,并在映射阶段添加if条件,如果元组读取来自set 1,则将其添加到arraylist1,如果来自set 2,则将其添加到arraylist2。然后你可以用这两个数组列表做任何你想做的事情!
发布于 2012-05-27 10:03:09
您应该研究级联,它是为了将一个mapreduce作业的输出链接(或“级联”)到另一个作业中。它抽象化了大量繁琐的工作,并允许开发人员在更高的级别上编写复杂的多步骤mapreduce作业。
https://stackoverflow.com/questions/9711821
复制相似问题