繁体   English   中英

没有减速器时的地图任务结果

[英]Map task results incase of no reducer

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

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

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

2)对于map only job ,最终输出存储在hdfs中。

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

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

数据本地化仅适用于Mapper阶段 ,不适用于Sort&Shuffle,Reducer阶段

2)当没有还原阶段时, 中间数据最终将被推送到HDFS。

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

Mapper输出是临时输出,仅与Reducer相关。 将临时输出存储在HDFS中(带有复制因子)是过大的选择。 由于这个原因,Hadoop框架将Mapper的输出存储到本地文件系统而不是HDFS系统中。 这样可以节省大量磁盘空间。

Apache教程页面中的另一点要点:

随后,与给定输出键关联的所有中间值都由框架进行分组,并传递给Reducer,以确定最终输出。

映射器的输出进行排序,然后按Reducer进行分区

在map reduce作业的情况下,没有reduce阶段(仅存在map阶段),最终结果存储在哪里?

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

减速机无

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM