一、安装
一般HBase最终都会需要与Hadoop集群整合在一起,所以Hadoop版本对HBase部署非常关键,不合适的Hadoop和HBase版本是无法工作的,Hadoop与HBase版本对应关系如下:
Table 2.1. Hadoop version support matrix
HBase-0.92.x | HBase-0.94.x | HBase-0.96 | |
---|---|---|---|
Hadoop-0.20.205 | S | X | X |
Hadoop-0.22.x | S | X | X |
Hadoop-1.0.x | S | S | S |
Hadoop-1.1.x | NT | S | S |
Hadoop-0.23.x | X | S | NT |
Hadoop-2.x | X | S | S |
S = supported and tested,支持
X = not supported,不支持
NT = not tested enough,可以运行但测试不充分
有了这个东西就可以开始选择版本安装了,这里选择hadoop-0.20.2和hbase-0.90.4。不言而喻,Java和Hadoop先安装是必须的,具体请参看这里,还有这里。
HBase镜像地址请参见这里,但是由于hbase-0.90.4版本比较老,需要从归档地址下载,点击这里下载。
非常潇洒的是HBase跟Hadoop一样都是绿色版,直接解压到本地文件系统即可:
#tar xzf hbase-0.90.4.tar.gz
接下来的关键就是配置了。
二、配置
HBase也有单机模式、伪分布模式等各种模式,这里以伪分布模式为例说明之,具体步骤如下。
cd到conf目录下,修改hbase-env.h:
export JAVA_HOME=/usr/java/jdk1.7.0_51
export HBASE_CLASSPATH=/root/hadoop-0.20.2/conf
export HBASE_MANAGES_ZK=true
上面三项分别是jdk路径、hadoop配置文件路径、是否由hbase管理zookeeper而不需要单独的zookeeper。
修改hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://v125006094.bja/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
需要注意的是,hbase.rootdir的配置必须与hadoop的core-site.xml中fs.default.name的配置一致,否则会出现HMaster无法启动的问题,如果依然有这个问题的话就不要填IP了而填写hostname。
此外,还必须保证/hbase目录存在即在HDFS中存在,这是HBase存储数据的目录,当然这个路径你可以视情况而定,具体如下:
替换HBase/lib目录下的hadoop-0.20-append-rxxx.jar为hadoop-0.20.2-core.jar,否则会出现Hadoop与HBase协议不一致而导致HMaster启动异常。
配置完了后,就可以启动HBase了。
三、启动
需要注意的是,启动HBase前需要先启动Hadoop,确保Hadoop启动无误后,在bin下执行如下命令启动HBase:
#./start-hbase.sh
#jps
确保HQuorumPeer、HRegionServer、HMaster都启动了。
执行如下命令停止HBase:
#./stop-hbase.sh
四、命令
在bin下执行如下命令即可进入hbase shell命令行:
#./hbase shell
hbase(main):010:0>
//创建表格test和column family
hbase(main):010:0> create 'test', 'cf'
//显示表test
hbase(main):010:0> list 'test'
//插入数据,HBase中列由column family和列名以冒号间隔组成,即cf:a、cf:b
hbase(main):010:0> put 'test', 'row1', 'cf:a', 'value1'
hbase(main):010:0> put 'test', 'row2', 'cf:b', 'value2'
//查询表test记录
hbase(main):010:0> scan 'test'
//查询一条表test记录,key为row1
hbase(main):010:0> get 'test', 'row1'
//删除表test
hbase(main):010:0> disable 'test'
hbase(main):010:0> drop 'test'