I have a Hadoop cluster made of 3 slaves and 1 master on top of which there
is an HBase cluster with 3 RS and 1 master respectively. Additionally there
is a Zookeeper ensemble on 3 machines.
The Hadoop cluster is functioning correctly as well as the Zookeeper
ensemble. However, the HBase cluster fails to initialize correctly.
I start HBase it by running ./bin/start-hbase.sh. This *correctly* starts
the HBase Master and the Region Servers. The hbase folder in hdfs is set-up
correctly.
*jps on master*
hduser@master:~/hbase$ jps
5694 HMaster
3934 JobHistoryServer
3786 NameNode
3873 ResourceManager
6025 Jps
*jps on slaves*
5737 Jps
5499 HRegionServer
3736 DataNode
3820 NodeManager
However, the HBase master does not register the Region Servers as it is
also apparent from looking at the logs:
*master log*
[master:master:60000] master.ServerManager: Waiting for region servers
count to settle; currently checked in 0, slept for 1511 ms, expecting
minimum of 1, maximum of 2147483647, timeout of 4500 ms, interval of
1500 ms.
*slave log*
[regionserver60020] regionserver.HRegionServer: reportForDuty to
master=master,60000,1404856451890 with port=60020,
startcode=1404856453874
[regionserver60020] regionserver.HRegionServer: error telling master we are up
com.google.protobuf.ServiceException:
org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout
while waiting for channel to be ready for connect. ch :
java.nio.channels.SocketChannel[connection-pending
local=/10.0.2.15:53939 remote=master/192.168.66.60:60000]
Here are the configuration details:
*/etc/hosts on master*
192.168.66.63 slave-3 # Data Node and Region Server
192.168.66.60 master # Name Node and HBase Master
192.168.66.73 zookeeper-3 # Zookeeper node
192.168.66.71 zookeeper-1 # Zookeeper node
192.168.66.72 zookeeper-2 # Zookeeper node
192.168.66.62 slave-2 # Data Node and Region Server
192.168.66.61 slave-1 # Data Node and Region Server
*/etc/hosts on slave-1*
192.168.66.60 master
192.168.66.73 zookeeper-3
192.168.66.71 zookeeper-1
192.168.66.72 zookeeper-2
*hbase-site.xml on ALL cluster nodes*
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hduser/hbase/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.local.dir</name>
<value>/home/hduser/hbase/local</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>6010</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zookeeper-1,zookeeper-2,zookeeper-3,</value>
</property>
</configuration>
*regionservers file on master and slaves*
slave-3
slave-1
slave-2
*hbase-env.sh on master and slaves*
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::"
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=false
What am I doing wrong so that the nodes cannot talk to each other?
I am using Hadoop 2.4.0 and Hbase 0.98.3 along with Zookeeper 3.4.6 on
Ubuntu Trusty Tahr x64.
|