【问题标题】:Weird DNS server causes Hadoop and HBase to malfunction奇怪的 DNS 服务器导致 Hadoop 和 HBase 出现故障
【发布时间】:2011-10-29 13:07:39
【问题描述】:

我的网络带有一些奇怪的(据我所知)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)不使用主机名来确定要绑定的地址?

【问题讨论】:

    标签: hadoop dns hbase apache-zookeeper


    【解决方案1】:

    幸运的是,我找到了解决此 DNS 服务器问题的方法。

    DNS 服务器在通过本地主机名查询时返回无效地址。 默认情况下,HBase 会对本地主机名进行反向 DNS 查找以确定绑定位置。 由于DNS服务器返回的地址无效,HMaster无法绑定。

    解决方法: 在 hbase/conf/hbase-site.xml 中明确指定将用于 master 和 regionserver 的接口:

    <configuration>
      <property>
        <name>hbase.master.dns.interface</name>
        <value>lo</value>
      </property>
      <property>
        <name>hbase.regionserver.dns.interface</name>
        <value>lo</value>
      </property>
    </configuration>
    

    在这种情况下,我指定了用于主服务器和区域服务器的环回接口 (lo)。

    【讨论】:

    • 如果环回接口有 127.0.0.1(适用于 12.04)而不是 127.0.1.1(Ubuntu 12.10 的默认名称服务器),则可以使用它
    • windows 操作系统的价值是什么? “lo”也可以用于windows吗?
    【解决方案2】:

    我为检查 DNS 问题而编写的一个简单工具: https://github.com/sujee/hadoop-dns-checker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2021-02-25
      • 2018-04-19
      • 2016-01-04
      • 2012-06-07
      相关资源
      最近更新 更多