在搭建HBase单机环境之前,首先你要保证你已经搭建好Java环境:
$ 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
路径:
$ 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、 解压到个人主目录下
$ 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对应的路径:
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
,设置数据保存的目录:
<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:
$ bin/start-hbase.sh
starting master, logging to /home/songlee/hbase-1.0.1.1/bin/../logs/hbase-songlee-master-songlee.out
查看Java进程:
$ jps
5464 HMaster
5561 Jps
可以看到HMaster
进程已经启动了。
四、HBase Shell交互
HBase Shell是一个封装了Java API的JRuby应用软件,通过它可以与HBase集群进行交互。
$ 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>
建表:
hbase(main):006:0> create 'mytable','cf'
0 row(s) in 0.3090 seconds
添加数据:
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
获取数据:
hbase(main):011:0> get 'mytable','first'
COLUMN CELL
cf:message timestamp=1437015412793, value=hello HBase!
1 row(s) in 0.0540 seconds
扫描表:
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