最近因為需要使用hbase集群做一些數據存儲,於是就自己搭建了一個hbase的集群,一共3台虛擬機。中途遇到了很多問題,做一個小小的記錄。
1,hbase api 與 虛擬機上安裝的hbase版本最好能夠匹配,否則會報一個關於java反射的錯誤。
2,做最基礎的hbase java客戶端其實只需要引入一個jar包 ,
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>x.x.x</version>
</dependency>
網上很多讓你引用這引用那的,如果你只是想建立一個最最簡單的hbase java客戶端其實是真的不需要的。
3,使用Configuration 類加載zookeeper的集群配置,其他的配置其實在最簡操作中都是多余的 即:
Configuration HBASE_CONFIG = new Configuration();
HBASE_CONFIG.set("hbase.zookeeper.quorum", "10.0.104.19,10.0.104.20,10.0.104.22");
HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181");
4,關於windows下的hosts文件的配置是最重要的部分(linux hbase集群配置成功,可以使用hbase shell 訪問是前提)
因為hbase client api 是首先通過zookeeper集群的地址去訪問對應地址上的zookeeper,然后zookeeper返回一個hbase
的訪問別名。然后windows上的客戶端需要根據這個別名去解析成ip地址完成對hbase的訪問。
你需要修改:C:\Windows\System32\drivers\etc\hosts 文件
.....(省略一部分文件類容)
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
10.0.104.19 namenode02
10.0.104.20 datanode01
10.0.104.22 datanode03
(注意:你的集群有多少台機器就要添加多少個,與你linux集群上的hosts文件類容一致就行)
新手上路,如果有不對的地方,歡迎指正。