Map Only Job in MapReduce

1.目的

在Hadoop中,Map-Only作业是mapper执行所有任务的过程,reducer没有任务,mapper的输出是最终输出。学习Hadoop MapReduce中Map Only作业的优点,以及不带Reducer的Hadoop处理以及不带Reducer的MapReduce示例。

2.什么是Hadoop MapReduce中的Map Only作业?

MapReduce框架,用于轻松编写处理存储在Hadoop分布式文件系统(HDFS)中的大量结构化和非结构化数据的应用程序。 MapReduce算法完成的两项重要任务是:Map任务和Reduce任务。 Hadoop Map阶段获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。 Hadoop Reduce阶段将map的输出作为输入,并基于该键值组合这些数据元组,并相应地输出对应的值。

从上面的字数统计的例子中,我们可以说有两个进程并行处理,map和reduce;在映射过程中,第一个输入被拆分,以便如图所示在所有映射节点之间分配工作,然后识别每个单词并映射到数字1. 生成 这些元组(键值)对。

在第一个mapper节点中,有三个词 Lion,Tiger和 River。因此,节点的输出将是三个具有三个不同键和值设为1的键 – 值对,并且对于所有节点重复相同的过程。然后将这些元组传递给reducer节点并使partitioner开始生效。它执行混洗,以便将具有相同key的所有元组发送到同一个节点。因此,在reduce过程中,基本上发生的是值的集合操作,或者对相同key的值进行操作。

现在,让我们考虑一个场景,我们只需要执行操作并且不需要聚合,在这种情况下,我们更喜欢Hadoop中的“仅Map-only作业”。在Hadoop Map-Only作业中,map通过其InputSplit执行所有任务,没有任何作业由Reducer完成。这里的mapper输出是最终的输出。

3.如何避免Hadoop Reduce  操作

我们可以通过在程序的配置中设置job.setNumreduceTasks(0)来实现此目的。这将使得reducer为0,因此映射器将完成全部任务。

4.在Hadoop中只映射作业的优点

在map和reduce阶段之间,有key排序和洗牌阶段。 Sort和shuffle负责按升序对键进行排序,然后根据相同的键对值进行分组。这个阶段是非常昂贵的,如果不需要reduce阶段,我们应该避免它,因为避免reduce阶段也会消除分类和shuffle阶段。这样也可以在shuffle时节省网络拥塞,将映射器的输出传送到reduce,当数据量巨大时,需要将大量数据传送到reduce。

映射器的输出在发送到reducer之前写入本地磁盘,但在map only作业中,该输出直接写入HDFS。这进一步节省了时间并降低了成本。

另外,在Hadoop Map Only作业中不需要分区程序和组合器,这使得进程更快。

5.结论

总之,在Hadoop中只映射作业通过避免混洗,分类和reduce阶段来减少网络拥塞。 Mapper负责整体处理并生成输出。我们可以通过使用job.setNumreduceTasks(0)来实现这一点。

Map Only Job in MapReduce

发表评论

电子邮件地址不会被公开。 必填项已用*标注

七 × 一 =