Namenode不使用具有HDFS联合的完全分布式hadoop集群中的所有数据节点

时间:2016-03-22 15:13:41

标签: hdfs cluster-computing hadoop2 federation

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

我的群集的规格是:

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

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

我无法找到许多教程解释如何完全配置HDFS联合(用于运行两个共享所有数据节点的名称节点),甚至在Apache Hadoop的官方文档中也没有。 我使用的是以下Fully Distributed Hadoop Federation Cluster

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

实际情况:

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

数据节点的使用似乎是随机的,但它们永远不会同时被两个名字节点使用(我的目标)

如果有人知道如何使用多个名称节点运行HDFS联盟,那么欢迎您来帮忙= P 谢谢。

1 个答案:

答案 0 :(得分:0)

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

它位于namenodes的 hdfs-site.xml 配置文件中。你可以在hadoop安装库中找到它:在我的情况下它位于〜/ hadoop-2.7.2 / etc / hadoop /

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

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

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

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