HBase单机环境搭建

在搭建HBase单机环境之前,首先你要保证你已经搭建好Java环境:

1
$ java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

JAVA_HOME路径:

1
$ echo $JAVA_HOME
/usr/java/jdk1.8.0_51

在单机模式中,HBase并不使用 HDFS,仅使用本地文件系统 —— ZooKeeper程序与HBase程序运行在同一个JVM进程中。

#一、下载HBase

虚拟机:VMware-workstation-11.1.0
操作系统:CentOS 6.5
JDK:jdk1.8.0_51
HBase:hbase-1.0.1.1

1、 下载的是HBase最新稳定版hbase-1.0.1.1-bin.tar.gz,地址 http://apache.fayea.com/hbase/

2、 解压到个人主目录下
1
$ tar -zxf hbase-1.0.1.1-bin.tar.gz
$ cd hbase-1.0.1.1

二、配置HBase

需要配置两个文件。

1、hbase-env.sh

编辑文件vim conf/hbase-env.sh,去掉#注释,JAVA_HOME改成jdk对应的路径:

1
export JAVA_HOME=/usr/java/jdk1.8.0_51
export HBASE_MANAGES_ZK=true

Hbase依赖于zookeeper,所有的节点和客户端都必须能够访问zookeeper。

HBase的安装包里面有自带的ZooKeeper,HBASE_MANAGES_ZK环境变量用来设置是使用HBase默认自带的 Zookeeper还是使用独立的ZooKeeper。

  • HBASE_MANAGES_ZK为 false 时使用独立的.
  • HBASE_MANAGES_ZK为 true 时表示使用默认自带的,让Hbase启动的时候同时也启动自带的ZooKeeper。

2、hbase-site.xml

编辑文件vim conf/hbase-site.xml,设置数据保存的目录:

1
2
3
4
5
6
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/songlee/hbase-1.0.1.1/data</value>
</property>
</configuration>

默认情况下Hbase是写到/tmp的,在重启的时候/tmp会被清空,数据就会丢失。

三、启动HBase

使用HBase提供的脚本启动HBase:

1
$ bin/start-hbase.sh 
starting master, logging to /home/songlee/hbase-1.0.1.1/bin/../logs/hbase-songlee-master-songlee.out

查看Java进程:

1
$ jps
5464 HMaster
5561 Jps

可以看到HMaster进程已经启动了。

四、HBase Shell交互

HBase Shell是一个封装了Java API的JRuby应用软件,通过它可以与HBase集群进行交互。

1
2
3
4
5
6
7
$ bin/hbase shell
2015-07-16 12:37:07,171 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015

hbase(main):001:0>

建表:

1
hbase(main):006:0> create 'mytable','cf'
0 row(s) in 0.3090 seconds

添加数据:

1
hbase(main):008:0> put 'mytable','first','cf:message','hello HBase!'
0 row(s) in 0.1420 seconds

hbase(main):009:0> put 'mytable','second','cf:foo',0x0
0 row(s) in 0.0220 seconds

hbase(main):010:0> put 'mytable','third','cf:bar',3.14159
0 row(s) in 0.0180 seconds

获取数据:

1
hbase(main):011:0> get 'mytable','first'
COLUMN                          CELL                                                                                      
 cf:message                     timestamp=1437015412793, value=hello HBase!                                               
1 row(s) in 0.0540 seconds

扫描表:

1
hbase(main):012:0> scan 'mytable'
ROW                             COLUMN+CELL                                                                               
 first                          column=cf:message, timestamp=1437015412793, value=hello HBase!                            
 second                         column=cf:foo, timestamp=1437015468629, value=0                                           
 third                          column=cf:bar, timestamp=1437015511565, value=3.14159                                     
3 row(s) in 0.0650 seconds