今天将单机的hbase加入hadoop集群中,启动hbase表现很正常。执行status长时间无响应。一段时间后报错:ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times。java
而且访问hbase界面的60010端口(http://node1:60010/master-status)也没法打开:node
查看日hbase/logs中日志后。在文件hbase-hadoop-master-node1.out中出现了以下一行:shell
14/10/05 22:25:52 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpe cted error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574 ) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocket NIO.java:350) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068) 14/10/05 22:25:53 INFO zookeeper.ClientCnxn: Opening socket connection to server node1/10.0.0.101:10086. Will not attempt to authenticate using SASL (没法定位登 配置)
原来是个人hbase/conf下的hbase-site.xml里的配置:apache
<property> <name>hbase.rootdir</name> <value>hdfs://node1:10086/hbase</value> </property>
和hadoop/conf里的core-site.xml里的安全
<property> <name>fs.default.name</name> <value>hdfs://node1:9000</value> </property>
不一致。必须保证两文件中地址和端口一致。都改为9000端口就行了。socket
执行命令:oop
[hadoop@node1 bin]$ ./hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27 00:54:09 UTC 2014 hbase(main):001:0> status 1 servers, 0 dead, 2.0000 average load
访问http://node1:60010页面打开正常。 spa
ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times。.net
出现上面这个错误通常有哪几种状况呢?日志
若是在hbase的配置文件中将rootdir属性设为hdfs,若是hbase与hadoop以前RPC协议不一致就会致使了这个问题的发生。
1.你能够检查hadoop的服务进程是否启动。
2.也能够查看他们二者间版本是否一致(如:查看hbase/lib下的hadoop-core文件的版本为hadoop-core-1.0.4.jar,而你的hadoop根目录下是hadoop-core-1.0.3.jar ,则不一致),若是不一致你能够将hadoop/hadoop-core-*.jar拷贝到hbase/lib/下。
3.另外能够查看是不是以安全模式启动的hadoop(命令:hadoop dfsadmin -safemode get查看安全模式状态),若是是开启的则关闭(命令:hadoop dfsadmin -safemode leave离开安全模式)。
4.固然,还有一种是二者间主机的系统时间不一致致使的(好比时区设定不一致,致使时间相差过大)。
固然解决这样的问题仍是得查看相关日志,从日志文件入手,你才能知道究竟是哪种状况。好比一样是报上面的错误,而查过日志后,才会发现个人问题是端口不一致致使的。