首页 > 解决方案 > hadoop中某些数据节点的IP映射错误

问题描述

我在使用本地域配置的 7 个节点上使用/etc/hosts. 看起来像这样

1.2.3.4 hadoop-master
1.2.3.5 hadoop-slave-1
1.2.3.6 hadoop-slave-2
1.2.3.7 hadoop-slave-3
1.2.3.8 hadoop-slave-4
1.2.3.9 hadoop-slave-5
1.2.3.10 hadoop-slave-6

现在的问题是,在某些节​​点上, 的映射错误hadoop-slave-1,即某些节点hadoop-slave-1映射到1.2.3.12而不是1.2.3.4。Namenode 具有正确的映射,因此数据节点在 namenode UI 中显示良好。

问题是,只更改/etc/hosts文件并启动服务会好吗?我认为它可能会破坏与hadoop-slave-1节点相关的一些特定块。

我可以想到两种方法来解决这个问题:

  1. 修复损坏节点中的 /etc/hosts 文件并重新启动服务。但我不确定这是否会损坏块。这个假设准确吗?

  2. 我们可以hadoop-slave-1暂时从集群中移除这台服务器并重新平衡 Hadoop 集群以在剩余的 6 个节点之间分配全部数据,然后再次将服务器重新添加到集群中并将数据重新平衡到 7 个节点。但是这样做的问题是,集群中包含的数据非常大,可能会产生问题,并且重新平衡数据将是一项繁重的工作,会对名称节点服务器造成压力,并可能导致堆问题。

在这种情况下还有其他解决方案吗?另外,您建议使用哪种工具或实用程序将数据复制到另一个 hadoop 集群?

非常感谢帮助!

标签: hadoophdfsnamenodedatanode

解决方案


一般来说,/etc/hosts如果您有一个功能正常的 DNS 服务器(大多数路由器都是),则不鼓励使用。

例如,在我的环境中,我可以ping namenode.lan


我认为选项 2 是最安全的选择。hdfs -rebalancer工作正常。

并可能导致堆问题

然后停止namenode,增加堆,然后重新启动它。当您使用它时,请设置 NameNode HA,这样您就不会停机。


注意:master/slave主机名实际上不是描述性的。HDFS 和 YARN 以及 Hive 和 HBase 和 Spark具有带有主服务的服务器-客户端架构,它们不应该位于一台机器上。


推荐阅读