在没有化简器的情况下映射任务结果



当mapreduce作业运行时,map任务结果存储在本地文件系统中,然后来自reducer的最终结果存储在hdfs中。问题是

  1. 映射任务结果存储在本地文件系统中的原因是什么?
  2. 在没有归约
  3. 阶段(仅存在地图阶段(的地图归约作业的情况下,最终结果存储在哪里?

1(映射器输出存储在本地fs中,因为在大多数情况下,我们对Reducer phase(也称为最终输出(给出的输出感兴趣。Mapper <K,V> pair is intermediate output,一旦传递给Reducer,它就最不重要了。如果我们将映射器输出存储在 hdfs 中,那将是存储的浪费,因为 hdfs 具有复制因子(默认为 3(,因此 3 倍的空间将被进一步处理根本不需要的数据占用。

2(在map only job的情况下,最终输出存储在hdfs中。

1(在TaskTracker(TT(映射器逻辑完成后,在将输出发送到排序和随机阶段之前,TT将把o/p存储在临时文件(LFS(中。这是为了避免在出现网络故障时再次启动整个MR作业。一旦存储在 LFS 中,映射器输出可以直接从 LFS 中拾取。此数据称为中间数据,其概念称为数据本地化

作业完成后,将删除此中间数据。否则,随着时间的推移,LFS 的大小会随着来自不同作业的中间数据而增长。

数据本地化仅适用于映射器阶段,不适用于排序和随机,化简器阶段

2(当没有化简阶段时,中间数据最终将被推送到HDFS上。

映射任务结果存储在本地文件系统中的原因是什么?

Mapper输出是临时输出,仅与Reducer相关。在HDFS(使用复制因子(中存储临时输出是矫枉过正的。由于这个原因,Hadoop框架将Mapper的输出存储到本地文件系统而不是HDFS系统中。它节省了大量的磁盘空间。

Apache教程页面中还有一个重要的观点:

与给定输出键关联的所有中间值随后按框架分组,并传递给化简器以确定最终输出。

映射器输出被排序,然后按化简器进行分区

在没有归约

阶段(仅存在地图阶段(的地图归约作业的情况下,最终结果存储在哪里?

您可以从 Apache 教程页面获取有关此查询的更多详细信息。

减速器无

如果不需要减少,将减少任务的数量设置为零是合法的。

在这种情况下,映射任务的输出直接进入文件系统,进入FileOutputFormat.setOutputPath(Job,Path(设置的输出路径。框架在将映射输出写入文件系统之前不会对其进行排序

如果化简器的数量大于 0,则映射器输出将存储在本地文件系统中,并在发送到化简器之前对其进行排序。如果化简器的数量为 0,则映射器输出存储在 HDFS 中而不进行排序。

相关内容

  • 没有找到相关文章

最新更新