【问题标题】:Not all nodes are being utilized in cluster并非所有节点都在集群中使用
【发布时间】:2016-09-15 02:17:31
【问题描述】:

我有一个由 YARN 管理的 30 节点 Hadoop MR2 集群。目前有 10 个 Oozie 作业,每个作业都运行一个 Map 程序。我注意到 30 个节点中只有 11 个被实际使用;只有 11 个节点有容器运行 Map 程序。

我希望每个节点至少运行一个容器。为什么不是这样?是否由于输入拆分,并且基于我的 HDFS 块大小设置,输入数据最好仅拆分为 11 个节点?如果是这种情况,调整块大小以使所有节点都得到利用会更优化吗?

【问题讨论】:

  • 30个节点都是datanode?我猜你的数据太稀疏了,它不需要所有的节点。数据本地化似乎正在发挥作用
  • 嗯,按照 Hadoop/大数据标准,80GB 的平面文件是否被认为是稀疏的?我敢肯定,只是想确保我们说的是同一种语言!
  • 取决于每个磁盘的大小,但是是的,不是那么大
  • 每个磁盘 200GB,所以是的,我想那是有道理的。它必须能够在本地将所有数据拆分到仅 11 个节点。也就是说,将数据拆分并分发到所有可用节点不是更好吗?这样,您有更多的 CPU 处理?
  • 这是 CPU 或带宽之间的权衡。考虑到所有数据都可以放在一个节点上,我相信 YARN 知道它在做什么。

标签: hadoop mapreduce hadoop-yarn azure-hdinsight


【解决方案1】:

根据请求,资源管理器将在集群中分配所需的资源。这些资源将用于运行您的 map reduce 作业的容器中。

如果有足够的可用资源,数据节点可以托管多个容器。 不要忘记,在 hadoop 中,计算是转移到数据而不是相反。 运行 mapreduce 作业的数据节点很可能是存储您正在处理的数据的节点。 依赖于数据块的输入拆分不直接影响参与计算的主机。

认为所有节点都应该运行是个坏主意。最好使用大数据是尽可能少地移动数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2017-10-29
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多