映射器的输出(中间数据)存储每个单独的映射数据的节点的本地文件系统(未HDFS)上。这通常是临时目录,可以由Hadoop管理员在配置中设置。一旦Mapper作业完成或数据传输到Reducer,这些中间数据就会被清理干净并且无法访问。
但是,我想知道映射器何时将其输出存储到本地硬盘?是否因为数据太大而无法存储?只有正在处理的数据保留在内存中?如果数据很小并且整个数据可以放在内存中,那么没有磁盘参与?
在mapper m/c的硬盘没有介入的情况下,我们能不能直接将数据在mapper中处理后从mapper转移到reducer。我的意思是当数据在映射器中被处理时,它在内存中,一旦计算出来,它就直接传递给reducer,映射器可以传递下一块数据,类似地没有磁盘卷入。
在spark中,据说有内存中的计算,与上面有什么不同?什么让火花计算内存比地图减少更好?另外,如果数据过于庞大,那么就会出现磁盘卷入的情况。
请解释
非常感谢你这么深入的回答。但是,通过mapreduce分区,你的意思是洗牌吗?这里他们是一样的吗? –
阅读此https://stackoverflow.com/questions/22141631/what-is-the-purpose-of-shuffling-and-sorting-phase-in-the-reducer-in-map-reduce –
你一直非常有帮助,你也可以请回答这个问题[链接](https://stackoverflow.com/questions/44351229/what-does-the-shuffling-phase-actually-do)..感谢很多 –