2014-10-07 45 views
0

最近我读了地图任务将其输出写入本地磁盘而不是HDFS。当我尝试了一个伪分布式模式的示例Mapreduce代码,其中只有map函数并且没有reducer时,我发现输出被写入到HDFS中。为什么? 任何人都可以解释这种情况?Hadoop Mapredce地图输出

回答

3

高层次的想法是mapreduce作业的最终输出写入HDFS,以便它可以用于其他目的,而任何中间数据,即地图作业的输出被写入本地(以避免开销在hdfs中复制数据),然后这些数据被reducer用于生成最终输出

因此,在这个reducers数为0的情况下,映射器的输出是最终输出,因此写入HDFS。

+0

将中间数据写入本地磁盘后,最终将其写入HDFS后将其删除? – Neethu 2014-10-09 01:48:01

+0

据我所知,本地磁盘上的这些数据会被定期删除。但是,如果您正在运行一些嵌套的map-reduce作业,则中间缩减作业的输出将存储在hadoop的/ tmp目录中,并且不会被删除。 – Amar 2014-10-09 05:28:41

+0

ok amar。感谢您的回应 – Neethu 2014-10-09 13:18:53

2

在正常的MapReduce作业中,仅将Reducer输出写入HDFS,Map输出/中间数据写入磁盘。HDFS中的输出文件将等于reducer的no。

如果我们没有减速即当job.setNumReduceTasks()设置为。没有减速器会运行,并且映射输出被写入HDFS,并且输出文件将等于映射器的数量。

希望这回答你的问题。

+0

ok sree veni。谢谢 – Neethu 2014-10-09 13:19:13

+0

@NeethuPL:如果您觉得有用,请接受答案 – 2014-10-10 08:48:21