【问题标题】:Namenodes don't use all datanodes in a fully distributed hadoop cluster with HDFS Federation名称节点不会使用具有 HDFS 联合的完全分布式 hadoop 集群中的所有数据节点
【发布时间】:2016-03-22 15:13:40
【问题描述】:

实际上,作为最终项目分配的大数据项目,我一直在寻找一种在完全分布式集群上运行 HDFS 联合的方法。

我的集群的规格是:

  • Hadoop 2.7.2
  • JDK 1.8.74
  • 操作系统系统为 CentOS 6.7
  • 2 个名称节点(Namenode1 和 Namenode2)
  • 2 个数据节点(Datanode1 和 Datanode2)
  • 1 个客户端(为 ViewFS 挂载表配置)

使用一个namenode,集群(1个namenode + 2个datanodes)工作正常,所有配置看起来都正确。

我什至在 Apache Hadoop 的官方文档中都找不到那么多解释如何完全配置 HDFS 联合(用于运行共享所有数据节点的名称节点)的教程。 我用的是下面那个Fully Distributed Hadoop Federation Cluster


我尝试有效地运行 HDFS 联合失败了,即使 dfs 守护程序已成功启动,但并非所有名称节点都使用数据节点。

实际情况:

当我启动 dfs 服务(使用 start-dfs.sh)时,Namednode1 使用所有数据节点,而 Namenode2 不使用任何数据节点。 或者每个namenode只使用一个唯一的datanode(Namenode1使用Datanode1,Namenode2使用Datanode2)。

datanodes 的使用似乎是随机的,但它们永远不会同时被两个 namenodes 使用(我的目标)

如果有人知道如何使用多个名称节点运行 HDFS 联合,欢迎您提供帮助 =P 谢谢。

【问题讨论】:

    标签: hdfs cluster-computing hadoop2 federation


    【解决方案1】:

    我终于找到了问题并纠正了它。

    它在名称节点的 hdfs-site.xml 配置文件中。您可以在 hadoop 安装目录中找到它:在我的情况下,它位于 ~/hadoop-2.7.2/etc/hadoop/

    除了标准配置,确保 dfs.name.dir 属性是指每个名称节点的元数据目录的位置。 就我而言,对于所有名称节点,我为此目的创建了 /hdfs/name 库,并具有适当的所有权(专门为使用 hadoop 而创建的用户)

    因此,您必须在集群的所有名称节点的 hdfs-site.xml 中添加以下几行 il 添加其他配置:

    <property>
    <name>dfs.name.dir</name>
    <value>file:///hdfs/name,file:///hdfs/name</value>
    </property>
    

    现在我的集群的两个名称节点都使用了所有的数据节点。 希望它会有所帮助。 另外我推荐阅读这本书,它对纠正我遇到的问题非常有用Hadoop Operations - Eric Sammer (O'Reilly)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2023-04-08
      • 1970-01-01
      • 2017-05-20
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多