在Spark中,我们可以随时将数据保存在内存中,但我想知道Hadoop MapReduce中Map和Reduce阶段之间的数据保存在哪里。它是保存在HDFS,磁盘还是RAM中?我的意思是,当数据被洗牌时(在Map / Combiner之后和Reduce之前),它保存在哪里?
答案 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磁盘中。
只有操作所需的数据才会被带入内存。