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>