作者: 蒋燚峰
1.2 快速入门
HBase有两种运行模式:单机运行(Standalone)模式和分布式运行(Distributed)模式。单机运行模式是HBase的默认模式。在单机模式中,HBase会使用一个本地文件系统来代替HDFS,并且在同一个JVM上运行所有的HBase守护进程和HBase管理的ZooKeeper实例。
本节将介绍单机HBase的安装。内容包括:安装HBase、以单机模式启动HBase、在HBase Shell中创建一张表、插入记录、清除记录以及关闭单机模式HBase实例。
1.2.1 准备
你需要有一台Linux机器来运行这组软件栈。不建议在Windows系统之上运行HBase。本书将以Debian 6.0.1(Debian Squeeze)为例进行讲解,因为我所任职的Rakuten公司就有多个运行在Debian上的Hadoop/HBase集群,而6.0.1是目前最新一版的Amazon Machine Image(AMI)。你可以从http://wiki.debian.org/Cloud/AmazonEC2Image下载它。
HBase是用Java编写的,因此需要先安装Java。HBase只能运行在Oracle的JDK上,所以在安装时不要使用OpenJDK。尽管Java 7已经发布了,但我们并不建议使用,因为它还需要更多的时间来测试。可以从下列地址中下载到最新版的Java SE 6:http://www.oracle.com/technetwork/java/javase/downloads/index.html。
执行下载到的二进制文件,安装Java SE 6。本书将使用/usr/local/jdk1.6来作为JAVA_HOME。
root# ln -s /your/java/install/directory /usr/local/jdk1.6
我们将新建一个名为Hadoop的用户,用来作为所有HBase/Hadoop守护进程和文件的所有者。我们还要把所有HBase文件和数据都存储在/usr/local/hbase目录下。
root# useradd hadoop
root# mkdir /usr/local/hbase
root# chown hadoop:hadoop /usr/local/hbase
1.2.2 操作步骤
从HBase官方网站(http://www.apache.org/dyn/closer.cgi/hbase/)上可以下载到HBase的最新稳定版本。
单机运行模式HBase实例的安装步骤如下。
1.下载HBase源码包,然后将其解压缩到我们为HBase准备的根目录中。为了使安装过程更为简单,我们还要设置一个HBASE_HOME环境变量。完成这两组操作的命令如下:
root# su - hadoop
hadoop$ cd /usr/local/hbase
hadoop$ tar xfvz hbase-0.92.1.tar.gz
hadoop$ ln -s hbase-0.92.1 current
hadoop$ export HBASE_HOME=/usr/local/hbase/current
2.在HBase的环境设置文件中设定环境变量JAVA_HOME,命令如下:
hadoop$ vi $HBASE_HOME/conf/hbase-env.sh
# The java implementation to use. Java 1.6 required.
export JAVA_HOME=/usr/local/jdk1.6
3.为HBase创建一个用于存储数据的目录,然后将该路径设置在HBase配置文件(hbase-site.xml)的 标签内。此步操作所使用的命令如下:
hadoop$ mkdir -p /usr/local/hbase/var/hbase
hadoop$ vi /usr/local/hbase/current/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>file:///usr/local/hbase/var/hbase</value>
</property>
4.使用如下命令以单机运行模式启动HBase:
hadoop$ $HBASE_HOME/bin/start-hbase.sh
starting master, logging to /usr/local/hbase/current/logs/hbase- hadoop- master-master1.out
5.使用如下命令通过HBase Shell连接到正在运行的HBase上:
hadoop$ $HBASE_HOME/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.1, r1298924, Fri Mar 9 16:58:34 UTC 2012
6.创建一张表并再插入一些值,以此来验证HBase是否安装正确。使用如下命令创建一张名为test的表,并为该表创建一个名为cf1的列族。
hbase(main):001:0> create 'test', 'cf1'
0 row(s) in 0.7600 seconds
(1)使用如下命令列出新创建的这张表:
hbase(main):002:0> list
TABLE
test
1 row(s) in 0.0440 seconds
(2)使用如下命令在新创建的表中插入一些值:
hbase(main):003:0> put 'test', 'row1', 'cf1:a', 'value1'
0 row(s) in 0.0840 seconds
hbase(main):004:0> put 'test', 'row1', 'cf1:b', 'value2'
0 row(s) in 0.0320 seconds
7.使用scan命令验证我们已将数据插入到了HBase中:
hbase(main):003:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf1:a, timestamp=1320947312117, value=value1
row1 column=cf1:b, timestamp=1320947363375, value=value2
1 row(s) in 0.2530 seconds
8.现在,使用disable和drop命令清除掉前面的操作。
(1)使用如下命令禁用表 test:
hbase(main):006:0> disable 'test'
0 row(s) in 7.0770 seconds
(2)使用如下命令删除表test:
hbase(main):007:0> drop 'test'
0 row(s) in 11.1290 seconds
9.使用如下命令退出HBase Shell:
hbase(main):010:0> exit
10.执行stop脚本关闭HBase实例:
hadoop$ /usr/local/hbase/current/bin/stop-hbase.sh
stopping hbase.......
1.2.3 运行原理
通过上面的操作,我们在单台服务器上完成了HBase 0.92.1的安装工作。我们使用了一个名为current的符号链接来指向其安装包的解压缩目录,这样可以使将来的升级更为方便。
为了让HBase能够知道Java的安装位置,我们在HBase的环境设置脚本HBase-env.sh中设置了JAVA_HOME。该脚本中还有一些关于Java堆和HBase守护进程的设置。本书的8~9章将对这些设置进行深入的讨论。
在第1步中,我们在本地文件系统中创建了一个目录,用于存储HBase的数据。在安装完全分布式的HBase时,需要将HBase配置为使用HDFS(而非使用本地文件系统)的方式。当我们在一台服务器上执行了start-hbase.sh脚本时,在该服务器上将会启动一个HBase的主守护进程(HMaster)。因为这一次我们没有配置区域服务器,所以HBase也只是在同一个JVM中启动了一个从守护进程(HRegionServer)。
正如“1.1 简介”一节提到过的那样,HBase需要使用ZooKeeper来作为自己的协调服务。而你可能也已经注意到了,前面这些步骤中并没有启动ZooKeeper。这是因为HBase在默认情况下会启动和管理一个它自己的ZooKeeper仲裁团。
接下来,我们通过HBase Shell连接上了HBase。我们可以使用HBase Shell来管理HBase集群、访问HBase中的数据并完成很多其他的工作。这一次,我们创建了一张名为test的表,向HBase中插入了一些数据,对test表进行了扫描,然后禁用并删除了这张表,最后退出了shell。
我们可以使用HBase的stop-hbase.sh脚本来关闭HBase。该脚本会将HMaster和HRegionServer守护进程都关闭。