丹调生活 发表于 2016-12-13 10:36:38

hadoop和hbase使用时要特别注意/etc/hosts文件

/etc/hosts文件对hbase有很重要的作用
比如在hbase的master启动的时候,需要在zookeeper里注册自己的hostname,master取得hostname的方法是
String hostname = Strings.domainNamePointerToHostName(DNS.getDefaultHost(
conf.get("hbase.master.dns.interface", "default"),
conf.get("hbase.master.dns.nameserver", "default")));

DNS.getDefaultHost方法为
public static String getDefaultHost(String strInterface, String nameserver)
throws UnknownHostException {
if (strInterface.equals("default"))
return InetAddress.getLocalHost().getCanonicalHostName();
if (nameserver != null && nameserver.equals("default"))
return getDefaultHost(strInterface);
String[] hosts = getHosts(strInterface, nameserver);
return hosts;
}

如果/etc/hosts文件中存在以下这样的条目,InetAddress.getLocalHost().getCanonicalHostName()就会返回localhost,那么zookeeper里的master的hostname就成了localhost,那么region server无论如何都不能访问master了
引用
127.0.0.1   localhost dev02

所以要写成
引用
127.0.0.1   localhost
192.168.1.2 dev02

这个问题应该也是同样的原因
页: [1]
查看完整版本: hadoop和hbase使用时要特别注意/etc/hosts文件