【问题标题】:hadoop not creating enough containers when more nodes are used当使用更多节点时,hadoop 没有创建足够的容器
【发布时间】:2016-09-03 05:18:39
【问题描述】:

所以我尝试在 AWS R3.4xLarge 机器上运行一些 hadoop 作业。他们有 16 个 vcore 和 122 GB 的可用内存。

我的每个映射器需要大约 8 gg 的内存和一个线程,因此这些机器非常适合这项工作。

我已将 mapreduce.memory.mb 设置为 8192, 并且 mapreduce.map.java.opts 设置为 -Xmx6144 这应该会导致每台机器上运行大约 14 个映射器(实际上接近 12 个)。

这实际上是 2 从属设置的情况,其中调度程序显示集群的利用率为 90%。

但是,当扩展到 4 个从属设备时,hadoop 似乎根本不会创建更多映射器。事实上,它会产生 LESS。

在我的 2 个从站设置中,我有不到 30 个映射器在任何时候运行,在四个从站上我大约有 20 个。机器的利用率略低于 50%。

vcore 在那里,物理内存在那里。到底缺了什么?为什么 hadoop 不创建更多容器?

【问题讨论】:

    标签: hadoop memory hadoop-yarn


    【解决方案1】:

    所以事实证明,无论您多么努力地弄清楚它,这都是永远没有意义的 hadoop 事情之一。

    yarn-default 中有一个设置叫做yarn.nodemanager.heartbeat.interval-ms。 这设置为 1000。显然它控制分配容器之间的最小时间间隔(以毫秒为单位)。

    这意味着它每秒只创建一个新的地图任务。这意味着容器的数量受我运行的容器数量*完成容器所需的时间限制。

    通过将此值设置为 50,或者更好的是 1,我能够获得 hadoop 集群所期望的那种扩展。老实说,应该更好地记录下来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2016-05-29
      • 1970-01-01
      相关资源
      最近更新 更多