Hbase版本选择和单机模式入门

摘要
HBase – Hadoop Database, 是一个高可靠性的、高性能的、可伸缩的、面向列存储的开源分布式存储系统。

版本选择
因为Hbase依赖于hadoop的hdfs,所有hadoop版本的选择也影响到hbase版本的选择,
基于Hadoop的版本选择和单机模式中hadoop的版本为:hadoop-2.5.1
以及官网文档:https://hbase.apache.org/book.html中jdk版本对hbase的支持,如图:

hbase

综合考虑最后选择的版本是:Hbase1.2.2

安装

tar -zxvf hbase-1.2.2-bin.tar.gz

环境变量

vi /etc/profile

文件末尾添加

export HBASE_HOME=/root/hbase-1.2.2
export PATH=$PATH:$HBASE_HOME/bin

生效环境变量

source /etc/profile

查看版本

[root@bogon ~]# hbase version
HBase 1.2.2
Source code repository git://asf-dev/home/busbey/projects/hbase revision=3f671c1ead70d249ea4598f1bbcc5151322b3a13
Compiled by busbey on Fri Jul  1 08:28:55 CDT 2016
From source with checksum 7ac43c3d2f62f134b2a6aa1a05ad66ac

表示已经安装成功

和hadoop一样,也有三种启动模式:单机模式、伪分布模式和完全分布模式,这里先来看最简单的单机模式
单机模式
配置文件修改
hbase-env.sh

export JAVA_HOME=/root/jdk1.7.0_79  #JDK安装目录
export HBASE_MANAGES_ZK=true #配置hbase自己管理zookeeper

hbase-site.xml

<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>file:///opt/hbase/data</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/hbase/data/zookeeper</value>
  </property>
</configuration>

hbase.rootdir 用于指定 HBase 数据存储目录, hbase.zookeeper.property.dataDir 用于指定 ZooKeeper 数据存储目录

启动

[root@bogon ~]# start-hbase.sh 
starting master, logging to /root/hbase-1.2.2/logs/hbase-root-master-bogon.out

jps查看进程

[root@bogon ~]# jps
19490 HMaster

连接hbase

[root@bogon ~]# hbase shell
2016-08-17 02:28:03,432 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/hbase-1.2.2/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/hadoop-2.4.1/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.2, r3f671c1ead70d249ea4598f1bbcc5151322b3a13, Fri Jul  1 08:28:55 CDT 2016

hbase(main):001:0> 

入门操作
status:查看hbase当前状态

hbase(main):003:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 3.0000 average load

create:创建表和列族

hbase(main):023:0* create 't1','c1'
0 row(s) in 1.4880 seconds

=> Hbase::Table - t1

list:列出指定表的信息

hbase(main):024:0> list 't1'
TABLE                                                                                                                                                                  
t1                                                                                                                                                                     
1 row(s) in 0.1790 seconds

=> ["t1"]

put:添加数据

hbase(main):025:0> put 't1','r1','c1:q1','v1'
0 row(s) in 0.2160 seconds

hbase(main):026:0> put 't1','r1','c1:q2','v2'
0 row(s) in 0.0070 seconds

hbase(main):027:0> put 't1','r2','c1:q3','v3'
0 row(s) in 0.0140 seconds

scan:扫描指定表中的数据

hbase(main):028:0> scan 't1'
ROW                                        COLUMN+CELL                                                                                                                 
 r1                                        column=c1:q1, timestamp=1471416866446, value=v1                                                                             
 r1                                        column=c1:q2, timestamp=1471416874664, value=v2                                                                             
 r2                                        column=c1:q3, timestamp=1471416886167, value=v3                                                                             
2 row(s) in 0.0280 seconds

get:获取单行数据

hbase(main):029:0> get 't1','r1'
COLUMN                                     CELL                                                                                                                        
 c1:q1                                     timestamp=1471416866446, value=v1                                                                                           
 c1:q2                                     timestamp=1471416874664, value=v2                                                                                           
2 row(s) in 0.0530 seconds

delete:删除单元格数据

hbase(main):030:0> delete 't1','r1','c1:q1'
0 row(s) in 0.0160 seconds

disable:禁用表,删除表之前需要禁用

hbase(main):031:0> disable 't1'
0 row(s) in 2.4390 seconds

drop:删除表

hbase(main):032:0> drop 't1'
0 row(s) in 1.2740 seconds

以上是一些基本的操作,后续会有更详细的介绍

注:使用的是SecureCRT连接linux,在进入hbase shell之后不能回退操作,很是麻烦,可以做如下设置:
securecrt1
securecrt2