导航
导航

单机HBase搭建

一、HBase单机版搭建步骤:

  1. 下载HBase,我这里选择的是hbase-0.94.27。
  2. 解压HBase,命令

    1
    tar -zxvf hbase-0.94.27.tar.gz

  3. 配置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客户端程序连接HBase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public 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未正常启动。