名称节点不使用具有 HDFS 联合的完全分布式 hadoop 集群中的所有数据节点
Namenodes don't use all datanodes in a fully distributed hadoop cluster with HDFS Federation
实际上,作为最终项目任务从事大数据项目的工作,我一直在寻找在完全分布式集群上实现 运行 HDFS 联合的方法。
我的集群规格是:
- Hadoop 2.7.2
- JDK 1.8.74
- OS系统是美分OS6.7
- 2 个名称节点(Namenode1 和 Namenode2)
- 2 个数据节点(Datanode1 和 Datanode2)
- 1 个客户端(为 ViewFS 安装配置 table)
使用一个namenode,集群(1个namenode + 2个datanode)工作正常,所有配置似乎都是正确的。
即使在 Apache Hadoop 的官方文档中,我也找不到那么多解释如何完全配置 HDFS Federation(针对 运行 共享所有数据节点的两个名称节点)的教程。
我用的是下面的Fully Distributed Hadoop Federation Cluster
我尝试 运行 有效地实现 HDFS 联合失败,即使 dfs 守护进程已成功启动,但数据节点并未被所有名称节点使用。
实际情况:
当我启动 dfs 服务时(使用 start-dfs.sh),Namednode1 使用所有数据节点,Namenode2 使用 none。
或者每个namenode只使用一个唯一的datanode(Namenode1使用Datanode1,Namenode2使用Datanode2)。
数据节点的使用似乎是随机的,但它们从来没有被两个名称节点同时使用过(我的objective)
如果有人知道如何 运行 具有多个名称节点的 HDFS 联合,欢迎您提供帮助 =P
谢谢。
我终于找到问题并改正了。
它在namenodes的hdfs-site.xml配置文件中。您可以在 hadoop 安装目录中找到它:在我的例子中,它位于 ~/hadoop-2.7.2/etc/hadoop/
除了标准配置,确保dfs.name.dir属性指的是每个namenode的元数据目录的位置。
就我而言,对于所有名称节点,我为此目的创建了 /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)
实际上,作为最终项目任务从事大数据项目的工作,我一直在寻找在完全分布式集群上实现 运行 HDFS 联合的方法。
我的集群规格是:
- Hadoop 2.7.2
- JDK 1.8.74
- OS系统是美分OS6.7
- 2 个名称节点(Namenode1 和 Namenode2)
- 2 个数据节点(Datanode1 和 Datanode2)
- 1 个客户端(为 ViewFS 安装配置 table)
使用一个namenode,集群(1个namenode + 2个datanode)工作正常,所有配置似乎都是正确的。
即使在 Apache Hadoop 的官方文档中,我也找不到那么多解释如何完全配置 HDFS Federation(针对 运行 共享所有数据节点的两个名称节点)的教程。 我用的是下面的Fully Distributed Hadoop Federation Cluster
我尝试 运行 有效地实现 HDFS 联合失败,即使 dfs 守护进程已成功启动,但数据节点并未被所有名称节点使用。
实际情况:
当我启动 dfs 服务时(使用 start-dfs.sh),Namednode1 使用所有数据节点,Namenode2 使用 none。 或者每个namenode只使用一个唯一的datanode(Namenode1使用Datanode1,Namenode2使用Datanode2)。
数据节点的使用似乎是随机的,但它们从来没有被两个名称节点同时使用过(我的objective)
如果有人知道如何 运行 具有多个名称节点的 HDFS 联合,欢迎您提供帮助 =P 谢谢。
我终于找到问题并改正了。
它在namenodes的hdfs-site.xml配置文件中。您可以在 hadoop 安装目录中找到它:在我的例子中,它位于 ~/hadoop-2.7.2/etc/hadoop/
除了标准配置,确保dfs.name.dir属性指的是每个namenode的元数据目录的位置。 就我而言,对于所有名称节点,我为此目的创建了 /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)