1.首先确定本地的zk版本跟服务器的zk版本是否一致,简单的就是看依赖的jar包,去zk的安装包下找对应的jar包直接跟本地的比较,操作hbase出现这种情况就是hbase安装目录的lib下找,确定版本一致。
2.在hbase的conf下hbase-site.xml下配置hbase.zookeeper.quorum这个属性,具体原因看网上有个解释不错:在master所在的pc上启动start-all时,内容提示所有的regionserver已经全部启动。但是,如果你去查看masterIP:60010时 会发现其他的regionserver并没有启动,regionserver的数量只有一台。因为已经有一台regionserver是活着的,所以 hbase还是能继续使用的,这会迷惑你。查看别的机器的日志后,你就会发现上述错误。zookeeper的定位居然定位到127.0.0.1去了,这个 不科学。最后,查阅资料才发现hbase.zookeeper.quorum这个属性设置时,默认本机即为zookeeper服务器(单机使用)。这就很 简单了,只需要增加这个属性就可以了。 <property>
<name>hbase.zookeeper.quorum</name>
<value>zk1,zk2,zk3</value>
</property>
然后本机的windows/System32/drivers/etc/hosts 文件打开,加入服务器上的/etc/hosts文件的内容,里面的localhost要设置为127.0.0.1。一般情况下,连接不上的问题都是这个hosts文件不一致造成的,具体原因等我进一步了解zookeeper会再贴出来。
3.hbase本身带有zk,所以调用的时候需要根据配置启动你需要的zk,是hadoop集群的还是hbase的,提供一种设置方法。 <property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/hadoop/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>