【问题标题】:Where is data kept after Map/Combine and before Reduce stage in Hadoop MapReduce?在 Map/Combine 之后和 Hadoop MapReduce 中的 Reduce 阶段之前,数据保存在哪里?
【发布时间】:2017-02-22 10:45:03
【问题描述】:

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

【问题讨论】:

标签: java hadoop apache-spark mapreduce


【解决方案1】:

根据我对 Hadoop Mapreduce 的了解。

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

2) Reducer 任务输出写在 HDFS 中。

如果 Mapreduce 作业只有 Mapper 任务输出写入 HDFS

希望这有帮助!!!...

【讨论】:

  • 在本地磁盘还是HDFS?
  • 本地磁盘(Map/Combiner 之后,Reduce 任务之前)你可以在ybhavesh.blogspot.in/2015/12/…找到一些 Mapreduce 示例
【解决方案2】:

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

当执行高复杂性操作时,开销变得相当大,您需要按顺序(在 Hadoop 中)调度不同的 Map/Reduce 作业,其中每个作业都将在 HDFS 中存储和检索数据。

Spark 极大地提高了性能,尽可能将这些部分结果保存在内存中。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      相关资源
      最近更新 更多