按照书上的配置如下
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <configuration>
然后出现以下错误
2017-12-21 14:59:04,866 ERROR [main] quorum.QuorumPeerConfig: Invalid configuration, only one server specified (ignoring)
2017-12-21 14:59:04,888 INFO [main] server.ZooKeeperServerMain: Starting server
其实下面还有很多错误,不过都是由于这最前面的这个错误导致的
开始以为是不同步导致错误(以为错误日志太长,没看到前面这错误),于是利用ntp把各节点同步,并且在hbase-site.xml配置了
<property> <name>hbase.master.maxclockskew</name> <value>120000</value> </property>
hbase.master.maxclockskew是用来防止HBase节点之间时间不一致造成regionserver启动失败,默认值是30000;
结果还是没解决问题,最后发现原来是ZooKeeper的配置出问题了,要设定hbase.zookeeper.quorum,设置Zookeeper节点的主机名,它的值个数必须是奇数。该字段的默认值是localhost,这个值对于分布式应用是不可以的(远程连接无法使用)
于是我的配置如下所以,然后问题也解决了
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master.maxclockskew</name> <value>120000</value> </property> <property> <name>hbase.master.info.port</name> <value>60010</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,slave1,slave2</value> </property> </configuration>
hbase.master.info.port设定之后就可以通过所指定的端口(60010),利用Web的方式查看HBase系统状态。http://master:60010