我的网络带有一些奇怪的(据我所知)DNS 服务器,导致 Hadoop 或 HBase 出现故障。
它将我的主机名解析为我的机器不知道的某个地址(即没有这样的接口)。
如果我在 /etc/hosts 中有以下条目,Hadoop 确实可以工作:
127.0.0.1 localhost
127.0.1.1 myhostname
如果条目“127.0.1.1 myhostname”不存在,则将文件上传到 HDFS 失败并抱怨它只能将文件复制到 0 个数据节点而不是 1 个。
但在这种情况下,HBase 不起作用:从 HBase shell 创建表会导致 NotAllMetaRegionsOnlineException(实际上是由 HMaster 试图绑定到 DNS 服务器为 myhostname 返回的错误地址引起的)。
在其他网络中,我使用以下 /etc/hosts:
127.0.0.1 localhost
192.168.1.1 myhostname
Hadoop 和 HBase 都可以工作。问题在于,在第二个网络中,地址是动态的,我无法将其列入 /etc/hosts 以覆盖奇怪 DNS 返回的结果。
Hadoop 以伪分布式模式运行。HBase 也在单节点上运行。
更改 DNS 服务器的行为不是一种选择。在 hbase/conf/regionservers 中将“localhost”更改为 127.0.0.1 不会改变任何内容。
有人可以建议一种方法,我如何在保持互联网连接的同时覆盖它的行为(我实际上是通过 Teamviewer 在客户端的机器上工作)。或者以某种方式配置 HBase(或它正在管理的 Zookeeper)不使用主机名来确定要绑定的地址?