安装HBase 1.1.5伪分布模式到Ubuntu 16.04教程
前言
本文继安装Hadoop 2.7.2伪分布模式到Ubuntu 16.04教程,旨在以尽可能短的篇幅介绍HBase 1.1.5在Ubuntu 16.04上的安装过程,适合于有过HBase或Hadoop安装经验的同学。
本文绝大部分参考HBase官方文档,出处见参考。
本文首先介绍HBase单机模式的安装,然后介绍伪分布模式的安装。
关于HBase
HBase是一个分布式可扩展的NoSQL数据库,提供了对结构化、半结构化、甚至非结构化大数据的实时读写和随机访问能力。
首先理清楚HBase和HDFS以及Hadoop的关系。在某种程序上,可以把HBase等同于HDFS,或者认为HBase是HDFS的增强版;HBase并不依赖于Hadoop,反而,是因为Hadoop在处理数据上的需求,导致HBase的出现。当HBase工作在单机模式时,HBase是不需要HDFS的支持的,其数据库直接存储在本地文件系统中,也就是说HBase可以依靠自身实现单机上的全部功能,直接配合Hadoop;而当HBase工作在伪分布模式下时,HBase需要依靠HDFS实现可靠性和分布式等的支持,其数据库存储在HDFS中,显然,在伪分布模式下,HBase要在HDFS之后启动。而HBase对Hadoop不构成任何依赖关系。
简单来说,HBase之于HDFS,就像数据库之于文件系统。
下载和初始化HBase
本文假定已经如前文安装好Hadoop
下载
使用来自CNNIC的HBase镜像
$ cd ~
$ wget http://mirrors.cnnic.cn/apache/hbase/1.1.5/hbase-1.1.5-bin.tar.gz
$ tar zxvf hbase-1.1.5-bin.tar.gz
$ sudo mv zxvf hbase-1.1.5-bin /usr/local/hbase
初始化HBase
JDK路径
关于获取JDK路径如前文所述,这里不再重复。
设置JAVA_HOME
编辑hbase-env.sh
$ cd /usr/local/hbase
$ nano conf/hbase-env.sh
在其中加入JAVA_HOME(根据自己实际修改)
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
后续操作全部在/usr/local/hbase路径下
单机模式
配置
编辑conf/hbase-site.xml
,configuration
配置为
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
</configuration>
这里即配置root和zookeeper路径,单机模式下将其配置到本机文件系统中,路径根据自己实际修改。注意文件夹不需要自己创建,HBase启动时会自动创建。
测试
启动HBase
$ bin/start-hbase.sh
此时
$ jps
会看到
HMaster
Jps
连接到HBase
$ bin/hbase shell
出现
hbase(main):001:0>
创建一个表
create 'test','cf'
出现
0 row(s) in 5.9060 seconds
=> Hbase::Table - test
列出表信息
list 'test'
出现
TABLE
test
1 row(s) in 0.1540 seconds
=> ["test"]
向表中插入数据
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
分别显示
0 row(s) in 1.0830 seconds
0 row(s) in 0.0410 seconds
0 row(s) in 0.0560 seconds
扫描表
scan 'test'
出现
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1464270895228, value=value1
row2 column=cf:b, timestamp=1464270901285, value=value2
row3 column=cf:c, timestamp=1464270906979, value=value3
3 row(s) in 0.1610 seconds
获取一行数据
get 'test','row1'
出现
COLUMN CELL
cf:a timestamp=1464270895228, value=value1
1 row(s) in 0.1940 seconds
删除表
disable 'test'
drop 'test'
分别显示
0 row(s) in 4.5630 seconds
0 row(s) in 2.4850 seconds
断开连接
quit
停止HBase
$ bin/stop-hbase.sh
伪分布模式
配置
首先将HBase设置为分布式,编辑conf/hbase-site.xml
,configuration
中添加
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
然后修改root由本地文件系统到HDFS,编辑conf/hbase-site.xml
,hbase.rootdir
值由
file:///home/hadoop/hbase
修改为
hdfs://localhost:9000/hbase
注意后面的端口号9000,需要保证与Hadoop DFS配置中的fs.defaultFS
相同!
conf/hbase-site.xml
的configuration
大体来看就是
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
测试
启动HBase
启动HBase前必须先启动HDFS!
$ /usr/local/hadoop/sbin/start-dfs.sh
然后
$ bin/start-hbase.sh
此时
$ jps
会看到
HRegionServer
DataNode
SecondaryNameNode
NameNode
HMaster
Jps
HQuorumPeer
此时查看HDFS中/hbase/
下目录
$ /usr/local/hadoop/bin/hdfs dfs -ls /hbase
会看到
Found 6 items
drwxr-xr-x - hadoop supergroup 0 2016-05-26 22:47 /hbase/.tmp
drwxr-xr-x - hadoop supergroup 0 2016-05-26 22:47 /hbase/MasterProcWALs
drwxr-xr-x - hadoop supergroup 0 2016-05-26 22:46 /hbase/data
-rw-r--r-- 3 hadoop supergroup 42 2016-05-26 22:46 /hbase/hbase.id
-rw-r--r-- 3 hadoop supergroup 7 2016-05-26 22:46 /hbase/hbase.version
drwxr-xr-x - hadoop supergroup 0 2016-05-26 22:46 /hbase/oldWALs
测试表操作
重复单机模式下的各种表操作。
停止hbase
$ bin/stop-hbase.sh
然后如果有需要,再停止HDFS
$ /usr/local/hadoop/sbin/stop-dfs.sh
启动和停止HBase
启动
在启动HDFS后
$ bin/start-hbase.sh
停止
在停止HDFS前
$ bin/stop-hbase.sh
小结
实际上HBase的安装很简单,而且逻辑也很清楚,关键是理清楚HBase和HDFS和Hadoop的关系,在弄清楚相互的依赖关系后,配置起来就不会一股脑跟着教程走了。
参考
- 黄宜华, 苗凯翔. "深入理解大数据:大数据处理与编程实践". 机械工业出版社, 2014.
- Apache HBase Reference Guide