- 下载HBase,我这里选择的是hbase-0.94.27。
解压HBase,命令
1
tar -zxvf hbase-0.94.27.tar.gz
配置HBase
hbase-env.sh 配置java_home:
1
export JAVA_HOME=/home/jdk1.7.0_75/
hbase-size.xml 配置文件目录和zk目录:
1
2
3
4
5
6
7
8<property>
<name>hbase.rootdir</name>
<value>file:///home/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/zookeeper</value>
</property>
这样一个最简单的HBase环境就搭建好了,hbase目录/bin/start-hbase.sh启动hbase。
二、Java客户端程序连接HBase1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
//安装HBase机器IP,单机模式下HBase使用自带的ZK,所以ZK地址即为HBase机器IP
String serverIp = "192.168.56.101";
conf.set("hbase.zookeeper.quorum", serverIp);
//zk的根node,默认为/hbase,可以在hbase-site.xml中配置
conf.set("zookeeper.znode.parent", "/hbase");
//zk连接端口号, 默认为2181,可以在hbase-site.xml中配置
conf.set("hbase.zookeeper.property.clientPort", "2181");
HBaseAdmin admin = new HBaseAdmin(conf);
//获得test表的HTableDescriptor对象
HTableDescriptor tableDescriptor = admin.getTableDescriptor(Bytes
.toBytes("test"));
byte[] name = tableDescriptor.getName();
//输出表名
System.out.println(new String(name));
HColumnDescriptor[] columnFamilies = tableDescriptor
.getColumnFamilies();
for (HColumnDescriptor d : columnFamilies) {
//输出列族
System.out.println(d.getNameAsString());
}
}
若上述程序成功执行表示,HBase搭建和连接成功。
说明:
1. 客户端使用的jar包版本需要和HBase安装的版本保持一致,不然连接出现Exception:java.lang.IllegalArgumentException: Not a host:port pair: PBUF
2. HBase安装过程中必须指定ZK的datadir,不然连接会出现Exception:java.net.ConnectException: Connection refused: no further information
而且,能够看到WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect,
表示ZK未正常启动。