hadoop - 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
节点相关的一些特定块。
我可以想到两种方法来解决这个问题:
修复损坏节点中的 /etc/hosts 文件并重新启动服务。但我不确定这是否会损坏块。这个假设准确吗?
我们可以
hadoop-slave-1
暂时从集群中移除这台服务器并重新平衡 Hadoop 集群以在剩余的 6 个节点之间分配全部数据,然后再次将服务器重新添加到集群中并将数据重新平衡到 7 个节点。但是这样做的问题是,集群中包含的数据非常大,可能会产生问题,并且重新平衡数据将是一项繁重的工作,会对名称节点服务器造成压力,并可能导致堆问题。
在这种情况下还有其他解决方案吗?另外,您建议使用哪种工具或实用程序将数据复制到另一个 hadoop 集群?
非常感谢帮助!
解决方案
一般来说,/etc/hosts
如果您有一个功能正常的 DNS 服务器(大多数路由器都是),则不鼓励使用。
例如,在我的环境中,我可以ping namenode.lan
我认为选项 2 是最安全的选择。hdfs -rebalancer
工作正常。
并可能导致堆问题
然后停止namenode,增加堆,然后重新启动它。当您使用它时,请设置 NameNode HA,这样您就不会停机。
注意:master
/slave
主机名实际上不是描述性的。HDFS 和 YARN 以及 Hive 和 HBase 和 Spark都具有带有主服务的服务器-客户端架构,它们不应该位于一台机器上。
推荐阅读
- routes - 从 Laravel 6 升级到 8 后无法准备路由
- terragrunt - 在 Terragrunt 中导入现有资源
- python - 如何使用 Jinja2 将 Python 列表格式化为 HTML 列表?
- regex - 只获取一个正则表达式的实例而不是多个
- javascript - jQuery AJAX - 在本地主机上使用 XAMPP 时不接收 JSON 数据
- r - 按R中匹配行中的值更新表行条目
- javascript - 代码:'MODULE_NOT_FOUND' 运行 Docker 应用程序时
- python - 数据框和循环和列表
- asp.net-core - 基于从中间件接收到的 http 标头的 Http 客户端注册
- python - 如何在不包含索引的情况下在 pandas 中生成 json 文件?