我在使用本地域配置的7个节点上安装了hadoop /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
Map到 1.2.3.12
而不是 1.2.3.4
. namenode有正确的Map,因此数据节点在namenodeui中显示良好。
问题是,换一种方式好吗 /etc/hosts
归档并启动服务?我认为它会破坏一些与 hadoop-slave-1
节点。
我可以想出两种方法来解决这个问题:
修复损坏节点中的/etc/hosts文件并重新启动服务。但我不确定这是否会损坏块。这个假设准确吗?
我们可以删除这个服务器 hadoop-slave-1
从集群中临时重新平衡hadoop集群,在剩下的6个节点之间分发整个数据,然后再次将服务器添加回集群,并将数据重新平衡到7个节点。但问题是,集群中包含的数据非常大,可能会产生问题,而且重新平衡数据将是一项繁重的工作,会对名称节点服务器造成压力,并可能导致堆问题。
在这种情况下还有别的解决办法吗?另外,您建议使用哪个工具或实用程序将数据复制到另一个hadoop集群?
非常感谢您的帮助!!
1条答案
按热度按时间c2e8gylq1#
一般来说,使用
/etc/hosts
如果您有一个功能正常的dns服务器(大多数路由器都是这样的),则不建议这样做。例如,在我的环境中,我可以
ping namenode.lan
我认为选择2是最安全的选择。hdfs -rebalancer
很好用。可能导致堆问题
然后停止namenode,增加堆,然后启动它。在运行时,设置namenode ha,这样就不会停机。
注:
master
/slave
主机名真的不是描述性的。hdfs、yarn、hive、hbase和spark都有带有主服务的服务器-客户机体系结构,它们不应该位于一台机器上。