一、安装

        一般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安装_hadoop
        替换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'