【问题标题】:Container Allocation | Container Size in Hadoop Cluster集装箱分配 | Hadoop 集群中的容器大小
【发布时间】:2018-02-24 09:37:09
【问题描述】:

我们知道,默认的最小容器大小是1024MB

考虑这个场景:

我已经在 VIRTUAL BOX 中设置了一个 Hadoop 集群 1-Master & 3-Datanodes>。

Namenode:主节点(3GB RAM)
数据节点:data1 (512MB RAM),
data2(512MB RAM),
data3(1GB RAM)

输入文件大小:500MB with Replication factor 3(所有节点具有所有块)

问题:

1. 现在假设我想运行一个 Mapreduce 程序,容器会在 data1、data2 上分配吗?
根据我的结果,Job 在所有三个数据节点上都创建了容器。

2. 有什么方法可以指定作业在特定节点上运行?

【问题讨论】:

    标签: hadoop mapreduce containers


    【解决方案1】:

    有什么方法可以指定一个作业在特定节点上运行?

    您不需要对此进行控制。 Hadoop 将容器发送到存在块的数据节点,因此您应该问如何控制块的放置位置,我也不确定您为什么要这样做。 p>

    YARN 有一个叫做“节点标签”的东西,它可以将特定节点分配给特定的调度程序队列,然后你会告诉 MapReduce/Tez/Spark 作业在哪个队列中运行,从而使用哪些节点。

    https://hadoop.apache.org/docs/r2.7.4/hadoop-yarn/hadoop-yarn-site/NodeLabel.html

    假设我想运行一个 Mapreduce 程序,容器会在 data1、data2 上分配吗?

    如果那里存在块,并且您还在数据节点上运行节点管理器,并且有足够的内存用于至少一个容器,那么是的。

    没有 NodeManager 和 ResourceManager,mapreduce 作业将无法运行

    【讨论】:

    • 正如您在上面的场景中看到的,由于复制因子=3,我在所有数据节点上都有块。我打算做的是在特定的数据节点上分配容器。 eg.Datanode3
    • 该设置并不能保证所有块均等分布。只有一个块保证离开第一台主机。其他两个可以仅放置在另一台服务器上,因为我假设您将所有内容都保留为默认机架放置...如上所述,您不能将 YARN 容器设置为特定节点。你也不应该。您可以创建 YARN 队列,为作业设置队列名称,并为资源管理器使用节点标签……这是我所知道的唯一方法。没有其他运行时配置可以提供 YARN 作业的服务器列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2013-11-26
    • 2018-04-25
    • 1970-01-01
    • 2014-06-03
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多