【问题标题】:Understanding number of map and reduce tasks in Hadoop MapReduce了解 Hadoop MapReduce 中的 map 和 reduce 任务的数量
【发布时间】:2017-04-26 10:51:01
【问题描述】:

假设 hadoop 系统中的一个节点有 8GB 内存可用。

如果task tracker和data节点消耗2GB,如果每个task需要的内存是200MB,那么可以启动多少个map和reduce?

8-2 = 6GB

所以,6144MB/200MB = 30.72

因此,总共将启动 30 个 map 和 reduce 任务。

我是对的还是我错过了什么?

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    mapper 和 reducer 的数量不是由可用资源决定的。您必须通过调用setNumReduceTasks() 在代码中设置减速器的数量。

    对于映射器的数量,它更复杂,因为它们是由 Hadoop 设置的。默认情况下,每个输入拆分大约有一个地图任务。您可以通过更改默认块大小、记录读取器、输入文件数来调整它。

    您还应该在 hadoop 配置文件中设置同时运行的 map 任务和 reduce 任务的最大数量,以及分配给每个任务的内存。最后两个配置是基于可用资源的配置。请记住,map 和 reduce 任务在您的 CPU 上运行,因此您实际上受到可用内核数量的限制(一个内核不能同时运行两个任务)。

    This guide 可以帮助您了解更多详情。

    【讨论】:

    • 谢谢!但是考虑到上面的资源量,我们是否可以找出在给定资源下可以运行的 map 和 reduce 任务的最大数量?
    • @user5155835 我认为没有一种(简单的)方法可以以编程方式找到它。您的想法几乎是正确的,但您还必须考虑可用的内核数量。
    • 不是以编程方式,而是理论上,使用给定的资源?
    • @user5155835 你的想法是对的,只是一个核心不能同时运行两个地图任务,所以你也受到可用核心数量的限制。
    • 并发任务的数量并不仅仅取决于节点上可用的内存。这也取决于内核的数量。如果您的节点有 8 个 vcore,并且您的每个任务需要 1 个核心,那么一次只能运行 8 个任务。
    【解决方案2】:

    并发任务的数量不仅仅取决于节点上可用的内存。这也取决于内核的数量。如果您的节点有 8 个 vcore,并且您的每个任务需要 1 个核心,那么一次只能运行 8 个任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 2016-10-25
      • 2012-07-07
      • 2016-01-11
      相关资源
      最近更新 更多