报错分析
执行启动命令:start-hbase.sh 后,查看节点的jps,确实能够查看到HMaster启动,但是几秒后再次查看,HMaster已经消失。
在网上查找了很多方法,如:
- 文件权限问题(博主尝试了Hadoop、HBase、JDK安装目录的权限皆修改为Hadoop用户)
- 域名解析(即节点之间不能ping通,但是博主的节点能够互相ping通)
- hbase-site.xml,zookeeper超时设置(zookeeper.session.timeout)
- 重新格式化Hadoop(不得已而为之)
但是,以上4种方法博主都尝试过,都没有效果,依然几秒后HMaster自动断开。
经过查询日志:
2018-11-17 13:50:59,346 INFO [main] zookeeper.ZooKeeper: Initiating client connection, connectStr ing=master:2181, slave4:2181, slave5:2181, slave7:2181 sessionTimeout=1800000 watcher=org.apache.h adoop.hbase.zookeeper.PendingWatcher@5a12c728
148 2018-11-17 13:50:59,379 WARN [main] zookeeper.RecoverableZooKeeper: Unable to create ZooKeeper Co nnection
149 java.net.UnknownHostException: slave4: 域名解析暂时失败
150 at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
151 at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
152 at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
153 at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
154 at java.net.InetAddress.getAllByName(InetAddress.java:1192)
155 at java.net.InetAddress.getAllByName(InetAddress.java:1126)
156 at org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:61)
157 at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:445)
158 at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:380)
159 at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.checkZk(RecoverableZooKeeper.java:14 1)
......
从日志分析,域名解析失败,想了一下,突然想到配置Hadoop的配置文件:当时在 value多打了一个空格,导致jps 没有显示完全,想到把空格删除后能否解决问题。
这时,想到在配置 hbase-site.xml 时,习惯性的将值之间打一个空格,如下:
<property>
<name>hbase.zookeeper.quorum</name>
<value>master, slave4, slave5, slave6, slave7</value>
</property>
每个 逗号 后面博主都加了一个空格,然后尝试把空格删除,将文件传到各个节点。再次启动 HBase,HMaster已经不再自动消失,问题解决。