实际上,作为最终项目分配工作的大数据项目,我一直在寻找在完全分布式集群上运行HDFS Federation的方法。
我的群集的规格是:
使用一个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 谢谢。
答案 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)