Zhou,

Can you create an issue and post a patch of the changes you made?

-Bryan

On Apr 28, 2008, at 9:42 AM, Zhou wrote:

Hi,

I've met a problem startup HBase.

I setup hbase with hdfs,
My server's network card has a ipv4 address and also a ipv6 address.

When I first startup hbase with default configuration file,
I found that the region server can't
register to master. And I found lots of 127.0.0.1 in log.

So I suppose interface "default" would not work and add following:

<property>
  <name>dfs.datanode.dns.interface</name>
  <value>eth0</value>
<description>The name of the Network Interface from which a data node should
  report its IP address.
  </description>
 </property>

However, when this is done. HBase master crashes;
And I see ipv6 addresses in the log.

So I dig into the source code,
found that HBase fails to deal with IPv6 address.

Details is in following:
In class  org.apache.hadoop.hbase.HRegionServer
the method getThisIP() invoke the method of class belongs to Hadoop- core package
The class is: org.apache.hadoop.net.DNS
the method is: getDefaultIP(String strInterface)
This method invokes another method in the same class: getIPs(String strInterface) Method getIPs always returns the first ip address no matter it is ipv4 or ipv6

I have fixed it by modifying method of org.apache.hadoop.net.DNS.getIPs(String
strInterface)
Such that it always returns ipv4 address
It is working now for me.
But when hadoop upgrades, I have to modify again.

I hope that HBase can fix this problem.

Many thanks,

Zhou



Reply via email to