在Hadoop MapReduce中Map / Combine之后和Reduce阶段之前保存数据的位置是什么?

时间:2016-10-13 10:44:06

标签: java hadoop apache-spark mapreduce

在Spark中,我们可以随时将数据保存在内存中,但我想知道Hadoop MapReduce中Map和Reduce阶段之间的数据保存在哪里。它是保存在HDFS,磁盘还是RAM中?我的意思是,当数据被洗牌时(在Map / Combiner之后和Reduce之前),它保存在哪里?

3 个答案:

答案 0 :(得分:2)

根据我在Hadoop Mapreduce中的知识。

1)将地图任务输出写入本地磁盘。(在Map / Combiner之后和Reduce任务之前)

2)Reducer任务输出以HDFS编写。

如果Mapreduce作业只有Mapper任务输出是用HDFS写的

希望这有助于!!! ...

答案 1 :(得分:1)

在常规Hadoop MapReduce中,每个步骤之间的作业输出数据必须存储在分布式文件系统(HDFS)中,然后才能开始下一步。因此Reducer必须从那里获取数据,这会增加磁盘/集群开销时间。

开销变得非常大,何时执行高复杂度操作,您需要按顺序(在Hadoop中)安排不同的Map / Reduce作业,其中每个作业将存储然后在HDFS中检索数据。

Spark可以极大地提高性能,并在可能的情况下将这些部分结果保留在内存中。

答案 2 :(得分:1)

所有中间数据都将存储在HDFS磁盘中。由于所有map / reduce操作都不是在单个节点中完成的。因此对于其他节点的简单数据访问(处理数据),所有临时数据都将存储在HDFS磁盘中。

只有操作所需的数据才会被带入内存。