把这次解决这个问题的操作记录下来,虽然还未搞清楚缘由,下次有空把hbase源码看一看。
自己搭建了个伪分布式的hbase环境,配置好hbase-env.sh、hbase-site.xml、regionservers后启动hbase,使用hbase shell能正常建表等操作。然而idea代码连接却一直日志显示在一处不再动,很久后才报连接异常。
2016-11-12 10:24:35,646 INFO org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:438) - Initiating client connection, connectString=10.46.179.206:2181 sessionTimeout=90000 watcher=hconnection-0x1c154c2, quorum=10.46.179.206:2181, baseZNode=/hbase
2016-11-12 10:24:35,684 INFO org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.<init>(RecoverableZooKeeper.java:120) - Process identifier=hconnection-0x1c154c2 connecting to ZooKeeper ensemble=10.46.179.206:2181
2016-11-12 10:24:35,685 INFO org.apache.zookeeper.ClientCnxn$SendThread.logStartConnect(ClientCnxn.java:975) - Opening socket connection to server 10.46.179.206/10.46.179.206:2181. Will not attempt to authenticate using SASL (unknown error)
2016-11-12 10:24:35,696 INFO org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(ClientCnxn.java:852) - Socket connection established to 10.46.179.206/10.46.179.206:2181, initiating session
2016-11-12 10:24:35,736 INFO org.apache.zookeeper.ClientCnxn$SendThread.onConnected(ClientCnxn.java:1235) - Session establishment complete on server 10.46.179.206/10.46.179.206:2181, sessionid = 0x158568b878d0009, negotiated timeout = 90000
发现HRegionServer没启动起来。异常日志为:
ERROR [main] regionserver.HRegionServerCommandLine: Region server exiting
java.lang.RuntimeException: HRegionServer Aborted
at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:66)
at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:85)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2400)
然后各种搜索对比,尝试了下面各种方法,如:
更改hbase.cluster.distributed属性、hbase.zookeeper.quorum属性、HBASE_MANAGES_ZK属性, 关闭ipv6, 更改regionservers为localhost,更改regionservers文件和hosts文件内的换行符等….皆未见效。
然后刚刚网上看了两篇解决方法,把hosts文件里其它名都注释掉,只留下当前服务器hostname(因为是单机,就只留了一个)。重启,还是不行,再搜,再把配置里一堆乱七八糟的去掉。配置如下:
hbase-site.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hadoop/hbase/tmp/hbase</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://10.46.179.206:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>ubuntu206</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
<property>
<name>hbase.superuser</name>
<value>hadoop</value>
</property>
<property>
<!--这里配在hbase能访问到的-->
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeperData</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<!-- 这个配置后面去掉了也能正常运行 -->
<name>hbase.coprocessor.abortonerror</name>
<value>false</value>
</property>
</configuration>
hbase-env.sh:
export JAVA_HOME="/usr/jdk/linux"
export HBASE_CLASSPATH=$HADOOP_HOME/conf
export HBASE_MANAGES_ZK=false
regionservers:
ubuntu206
之后启动hbase,终于把HregionServer启动起来了,客户端也能正常连接了。
正常后把hosts配置上别的再重启也不影响,问题可能还是出在hbase-site.xml里多配了些什么东西且配错了。
另,hbase正常后,之前kafka客户端连接异常的问题也好了,不管kafka server.properties 内host.name配为主机名还是ip地址都是OK的。。。有点莫名其妙. - -# 。