Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
怪异的DNS服务器导致Hadoop和HBase出现故障_Hadoop_Dns_Hbase_Apache Zookeeper - Fatal编程技术网

怪异的DNS服务器导致Hadoop和HBase出现故障

怪异的DNS服务器导致Hadoop和HBase出现故障,hadoop,dns,hbase,apache-zookeeper,Hadoop,Dns,Hbase,Apache Zookeeper,我有一个网络和一些奇怪的DNS服务器(据我所知),这会导致Hadoop或HBase出现故障 它将我的主机名解析为我的计算机不知道的某个地址(即,没有这样的接口) 如果在/etc/hosts中有以下条目,Hadoop就可以工作: 127.0.0.1 localhost 127.0.1.1 myhostname 127.0.0.1 localhost 192.168.1.1 myhostname 如果条目“127.0.1.1 myhostname”不存在,则将文件上载到HDF

我有一个网络和一些奇怪的DNS服务器(据我所知),这会导致Hadoop或HBase出现故障

它将我的主机名解析为我的计算机不知道的某个地址(即,没有这样的接口)

如果在/etc/hosts中有以下条目,Hadoop就可以工作:

127.0.0.1     localhost
127.0.1.1     myhostname
127.0.0.1   localhost
192.168.1.1 myhostname
如果条目“127.0.1.1 myhostname”不存在,则将文件上载到HDFS失败,并抱怨它只能将文件复制到0个数据节点,而不是1个

但在这种情况下,HBase不起作用:从HBase外壳创建表会导致NotAllMetaRegionOnlineException(实际上是由于HMaster试图绑定到DNS服务器为myhostname返回的错误地址)

在其他网络中,我使用以下/etc/hosts:

127.0.0.1     localhost
127.0.1.1     myhostname
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)不使用主机名来确定要绑定的地址?

幸运的是,我找到了解决此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>

hbase.master.dns.interface
瞧
hbase.regionserver.dns.interface
瞧

在本例中,我指定了用于master和regionserver的环回接口(lo)。

幸运的是,我找到了解决此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>

hbase.master.dns.interface
瞧
hbase.regionserver.dns.interface
瞧

在本例中,我指定了用于master和regionserver的环回接口(lo)。

我编写的一个简单工具,用于检查DNS问题:

我编写了一个检查DNS问题的简单工具:

如果环回接口是127.0.0.1(适用于12.04)而不是127.0.1.1(Ubuntu 12.10的默认名称服务器),则可以使用它。windows操作系统的值是多少?“lo”也可以用于windows吗?如果环回接口为127.0.0.1(适用于12.04),而不是127.0.1.1(Ubuntu 12.10的默认名称服务器),则可以使用它。windows操作系统的值是多少?“lo”也可以用于windows吗?