Hadoop 在没有减速器的情况下映射任务结果
当mapreduce作业运行时,映射任务结果存储在本地文件系统中,然后来自reducer的最终结果存储在hdfs中。问题是Hadoop 在没有减速器的情况下映射任务结果,hadoop,mapreduce,Hadoop,Mapreduce,当mapreduce作业运行时,映射任务结果存储在本地文件系统中,然后来自reducer的最终结果存储在hdfs中。问题是 映射任务结果存储在本地文件系统中的原因是什么 如果map REDUCT作业没有缩减阶段(仅存在map阶段),最终结果存储在哪里 1) 映射器输出存储在本地fs中,因为在大多数情况下,我们对Reducer阶段给出的输出(也称为最终输出)感兴趣。映射器对是中间输出,一旦传递到Reducer,它就最不重要了。如果我们将映射器输出存储在hdfs中,这将浪费存储空间,因为hdfs具有
映射器对是中间输出,一旦传递到Reducer,它就最不重要了。如果我们将映射器输出存储在hdfs中,这将浪费存储空间,因为hdfs具有复制因子(默认情况下为3),因此在进一步处理中根本不需要的数据将占用3倍的空间
2) 在仅映射作业的情况下
,最终输出存储在hdfs中。1)任务跟踪器(TT)映射器逻辑完成后,在将输出发送到排序和洗牌阶段之前,TT将把o/p存储在临时文件(LFS)
这是为了避免在出现网络故障时再次启动整个MR作业。一旦存储在LFS中,映射器输出可以直接从LFS中拾取。该数据称为中间数据,该概念称为数据定位
一旦作业完成,此中间数据将被删除。否则,LFS的大小将随着时间的推移随着来自不同作业的中间数据的增加而增大
数据本地化仅适用于映射程序阶段,而不适用于排序和洗牌、还原程序阶段
2) 当没有减速器阶段时,中间数据最终将推送到HDFS上
映射任务结果存储在本地文件系统中的原因是什么
映射器
输出是临时输出,仅与减速器
相关。将临时输出存储在HDFS中(使用复制因子)有点过分了。由于这个原因,Hadoop框架将映射器的输出存储到本地文件系统而不是HDFS系统中。它节省了大量的磁盘空间
Apache教程中还有一个要点:
与给定输出键相关联的所有中间值随后由框架分组,并传递给减速器以确定最终输出
映射器输出按减速机进行排序和分区
如果map REDUCT作业没有缩减阶段(仅存在map阶段),最终结果存储在哪里
您可以从Apache教程页面了解有关此查询的更多详细信息
无减速器
如果不需要减少,将减少任务数设置为零是合法的
在这种情况下,映射任务的输出直接进入文件系统,进入FileOutputFormat.setOutputPath(作业,路径)设置的输出路径。在将映射输出写入文件系统之前,框架不会对其进行排序
如果还原器的数量大于0,则映射器输出将存储在本地文件系统中,并在将其发送到还原器之前进行排序。如果还原器的数量为0,则映射器输出将存储在HDFS中,而不进行排序