Hadoop MapReduce : MapTasks vs. 映射器

标签 hadoop mapreduce

最近我阅读了很多文档并提出了有关 Hadoop 的问题,但只有一件事我不明白。

在以下两种情况下,究竟会发生什么?

通用配置

  • 文件大小 = 1GB
  • Hadoop 1.2.1 安装在具有超线程的四核上
  • Hadoop 以伪分布式模式运行

场景一

  • Split Size = 1GB => 只有一个 map task
  • mapred.tasktracker.map.task.maximum = 4

我的理解是,虽然这个节点最多可以同时运行 4 个映射器,但我只有一个 MapTask,所以它只使用了 1 个映射器。 (1 个过程)

MapTask < Mapper

场景2

这是我最困惑的.. - Split Size = 250MB => 有四个 map task - mapred.tasktracker.map.task.maximum = 1

在这种情况下,我的情况实际发生的情况是它比方案 1 运行得更快,并且运行的进程更多。我很困惑,因为我知道 MapTasks 可以同时运行,但它不是也受映射器数量的限制吗?因此,在这种情况下,我认为它看起来像这样,并且具有相似的执行时间结果。

mapper processes map task 1 ----> done
mapper processes map task 2 ----> done
mapper processes map task 3 ----> done
mapper processes map task 4 ----> done

enter image description here

问题

当我的 MapTasks 多于映射器时,究竟会发生什么???

最佳答案

所以,我会回答你的问题,但它并没有解释你所看到的性能差异。

When I have more MapTasks than mappers, what exactly happens?

如果你的 map task 多于 map 槽,你是对的: map 槽将被分配到最大值。一旦 map task 完成,JobTracker 会在打开的 map 槽中分配下一个 map task 。

将它分成四个可能会更快,即使由于一些原因它是顺序的......也许缓冲区溢出行为是不同的,因为数据的大小不同。很难判断所提供的信息是怎么回事。

关于Hadoop MapReduce : MapTasks vs. 映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410519/

相关文章:

hadoop - 为什么在dfs.data.dir指定的路径中看不到阻止文件?

hadoop - 使用 CACHE_THROUGH 将数据写入 alluxio 失败

java - import org.apache.hadoop 无法解析

hadoop - 用于Apache Hadoop Big SQL的Bluemix Analytics-如何访问日志以进行调试?

java - 使用MapReduce执行组操作

hadoop - 在 Windows 7 上运行 Hadoop

hadoop - 使用Hadoop Map reduce处理和拆分大数据?

java - 使用JobID获取MapReduce输出文件夹

hadoop - 在主节点维护一个数据结构

hadoop - 是否可以在 Hadoop Mapreduce 中为单个作业打印 Mapper 和 reducer 输出