I have a network with some weird (as I understand) DNS server which causes Hadoop or HBase to malfunction.
It resolves my hostname to some address my machine doesn\'
a simple tool I wrote to check for DNS issues: https://github.com/sujee/hadoop-dns-checker
Luckily, I've found the workaround to this DNS server problem.
DNS server returned invalid address when queried by local hostname. HBase by default does reverse DNS lookup on local hostname to determine where to bind. Because the address returned by DNS server was invalid, HMaster wasn't able to bind.
Workaround: In hbase/conf/hbase-site.xml explicitly specify interfaces that will be used for master and 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>
In this case, I specified loopback interface (lo) to be used for both master and regionserver.