前言
很多人使用HBase都是从Standalone模式开始的,毕竟不是每个人都有一个集群可以用来随便测试的。但是很多书上没有对如何使用Java API远程连接Standalone模式的HBase详细介绍,导致很多人的代码在连接HBase时碰到很多问题。本文可为你解惑
步骤一,JDK
安装Standalone模式的HBase,这个看看HBase的官网即可。
设置JDK,一般jdk7即可,目前jdk8经常会碰到那个“util.map”的class问题。
在linux的用户(安装HBase的用户)的.bash_profile文件的末尾加上如下代码:
#注意替换为自己的jdk安装目录
export JAVA_HOME=/opt/jdk7
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#注意替换为自己的hbase安装目录
export HBASE_HOME=/opt/hbase
export PATH=${HBASE_HOME}/bin:${PATH}
步骤二,hosts(特别重要)
修改/etc/hosts文件,在其末尾加入如下代码:
#注意改为自己的ip和hostname名称
192.168.33.44 hbase_svr_name
很多人发现自己使用Java远程连接Hbase报错,都会出现zookeeper连接127.0.0.1的信息,都是因为hosts文件没有设置。
步骤三,hbase-site.xml
修改$HBASE_HOME/conf/hbase-site.xml文件:
<configuration>
<property>
<name>hbase.rootdir</name>
<!--注意这里改为自己的hbase的存储目录 -->
<value>file:///opt/hbase/data</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<!--注意这里改为自己的hostname-->
<value>hbase_svr_name</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/hbase/data/hbase</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
</configuration>
步骤四:调用API
无论是windows还是linux下,调用API是一样的,除了要把hbase、hadoop、zookeeper依赖的jar包都设置好以外,最重要的就是以下这个代码片段:
Configuration config= HBaseConfiguration.create();
//这里改为你的hbase服务器ip
config.set("hbase.zookeeper.quorum","192.168.33.44");
//zookeeper的默认端口,2181
config.set("hbase.zookeeper.property.clientPort","2181");
经过测试,其他属性可以不设置。有人说windows也必须在hosts文件中添加
192.168.33.44 hbase_svr_name
似乎并无必要,除非你要在
config.set("hbase.zookeeper.quorum","hbase_svr_name");
这里写入hostname而不是ip。
就这样了,有问题请尽快反馈给我,谢谢。