【发布时间】:2017-02-22 10:45:03
【问题描述】:
在 Spark 中,我们可以随时将数据保存在内存中,但我想知道数据在 Hadoop MapReduce 中的 Map 和 Reduce 阶段之间保存在哪里。它是保存在 HDFS、磁盘还是 RAM 中?我的意思是,当数据被洗牌时(即在 Map/Combiner 之后和 Reduce 之前),它保存在哪里?
【问题讨论】:
标签: java hadoop apache-spark mapreduce
在 Spark 中,我们可以随时将数据保存在内存中,但我想知道数据在 Hadoop MapReduce 中的 Map 和 Reduce 阶段之间保存在哪里。它是保存在 HDFS、磁盘还是 RAM 中?我的意思是,当数据被洗牌时(即在 Map/Combiner 之后和 Reduce 之前),它保存在哪里?
【问题讨论】:
标签: java hadoop apache-spark mapreduce
根据我对 Hadoop Mapreduce 的了解。
1) Map 任务输出写入本地磁盘。(Map/Combiner 之后,Reduce 任务之前)
2) Reducer 任务输出写在 HDFS 中。
如果 Mapreduce 作业只有 Mapper 任务输出写入 HDFS
希望这有帮助!!!...
【讨论】:
在常规 Hadoop MapReduce 中,每个步骤之间的作业输出数据必须存储在分布式文件系统 (HDFS) 中,然后才能开始下一步。所以 reducers 必须从那里获取数据,这会增加磁盘/集群开销时间。
当执行高复杂性操作时,开销变得相当大,您需要按顺序(在 Hadoop 中)调度不同的 Map/Reduce 作业,其中每个作业都将在 HDFS 中存储和检索数据。
Spark 极大地提高了性能,尽可能将这些部分结果保存在内存中。
【讨论】:
所有中间数据都将存储在 HDFS 磁盘中。因为所有的 map/reduce 操作都不是在单个节点中完成的。因此对于其他节点方便的数据访问(已处理数据),所有中间数据都将存储在 HDFS 磁盘中。
只有操作需要的数据才会被存入内存。
【讨论】: