前言
HBase是Hadoop数据库,能够实现随机、实时读写你的Big Data,它是Google的Bigtable的开源实现,可以参考Bigtable的论文Bigtable: A Distributed Storage System for Structured。HBase的存储模型可以如下三个词来概括:distributed, versioned, column-oriented。HBase并非只能在HDFS文件系统上使用, 你可以应用在你的本地文件系统上部署HBase实例来存储数据。
环境准备&安装文件
安装文件下载
以下为大家准备了安装文件,也可以自己到网上下载
下载地址:http://hbase.apache.org/book.html#basic.prerequisites,我这里安装的是1.3.1版本
| 准备文件 | 下载地址 |
| —————————- | —————————————————————————————— |
| hbase-1.3.1-bin.tar | 链接: https://pan.baidu.com/s/1dlUjcLjemTcm7jnc0HDiwQ 提取码: typ4 |请注意以下对应hadoop所支持版本。
服务器环境安装(Master201,Slave202,Slave203一共3台服务器)
Hbase安装配置
上传安装包解压
1
[root@master201 Soft]# tar -zxvf hbase-1.3.1-bin.tar
设置环境变量
1
2
3
4
5
6
7
8[root@master201 Soft]# vi /etc/profile
添加以下内容
export HBASE_HOME=/home/lishijia/Soft/hbase-1.3.1
export PATH=$HBASE_HOME/bin:$PATH
添加完执行以下命令生效
[root@master201 Soft]# source /etc/profileHbase环境变量配置
1
2
3
4
5
6
7
8
9创建pid目录
[root@master201 Soft] mkdir /home/lishijia/Soft/hbase-1.3.1/pid
[root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/hbase-env.sh
添加以下配置信息
export JAVA_HOME=/home/lishijia/Soft/jdk1.8.0_144
export HBASE_PID_DIR=/home/lishijia/Soft/hbase-1.3.1/pid
不适用内置zookeeper,使用我们自己安装的,通过hbase-site.xml配置
export HBASE_MANAGES_ZK=falsehbase-site配置
1
[root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master201:9000/hbase</value>
<description>设置 hbase 数据库存放数据的目录,这里是放在hadoop hdfs上,这里要与hadoop的core-site.xml文件中的fs.default.name中的值一致,然后在后面添加自己的子目录,我这里定义是hbase</
description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>打开 hbase 分布模式</description>
</property>
<property>
<name>hbase.master</name>
<value>master</value>
<description>指定 hbase 集群主控节点</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/lishijia/Soft/hbase-1.3.1/tmp</value>
<description>hbase的一些临时文件存放目录。</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master201,slave202,slave203</value>
<description> 指定 zookeeper 集群节点名 ,Leader是由 zookeeper 表决算法决定的</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description> 连接到zookeeper的端口,默认是2181</description>
</property>
</configuration>regionservers配置
配置 region服务器,该文件指定了HRegionServer进程将在哪些节点上运行
1
2
3
4
5
6[root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/regionservers
添加对应的节点信息
master201
slave202
slave203scp安装到其他两台机器
1
2[root@master201 Soft] scp -r hbase-1.3.1/ slave202:/home/lishijia/Soft/
[root@master201 Soft] scp -r hbase-1.3.1/ slave203:/home/lishijia/Soft/
启动Hbase&验证
启动Hbase。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@master201 bin]# ./start-hbase.sh
starting master, logging to /home/lishijia/Soft/hbase-1.3.1/logs/hbase-root-master-master201.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
master201: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-master201.out
slave202: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-slave202.out
slave203: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-slave203.out
master201: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
master201: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
[root@master201 bin]# jps
2864 QuorumPeerMain
7168 NameNode
7378 SecondaryNameNode
9607 HMaster
9927 Jps
9755 HRegionServer
6639 ResourceManagerjps查看进程信息
zookeeper查看节点信息
Hbase简单使用
hbase shell进入控制台
1
2
3
4
5
6
7
8
9
10[root@master201 bin]# hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/lishijia/Soft/hbase-1.3.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/lishijia/Soft/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr 6 19:36:54 PDT 2017
hbase(main):001:0>hbase创建表
即创建了一个student表,列族:info。因为HBase的表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后第一个数据
1
2
3
4hbase(main):001:0> create 'student','info'
0 row(s) in 1.5350 seconds
=> Hbase::Table - studentdescribe查看表结构信息
1
hbase(main):005:0> describe 'student'
添加数据至student表
1
2
3
4
5
6
7
8
9
10
11
12
13# 添加一条数据建:1,name列:lishijia
hbase(main):001:0> put 'student', '1', 'info:name', 'lishijia'
# 添加sex列
hbase(main):001:0> put 'student', '1', 'info:sex', '男'
# 添加age列
hbase(main):001:0> put 'student', '1', 'info:age', '30'
hbase(main):001:0> put 'student', '1', 'info:age', '31'
# 添加一条数据建:1,name列:lishijia
hbase(main):001:0> put 'student', '2', 'info:name', 'eva'
# 添加sex列
hbase(main):001:0> put 'student', '2', 'info:sex', '女'
# 添加age列
hbase(main):001:0> put 'student', '2', 'info:age', '29'get查看数据,可以看到每列的数据都带有时间戳的,针对每次修改都是累加,通过时间戳来标记最新的数据,至于最多保留多少条数据,这个是在创建表的时候,可以设置保留版本数
1
hbase(main):012:0> get 'student', '1'
scan扫描表
1
hbase(main):016:0> scan 'student'
删除表
1
2
3删除表有两步,第一步先让该表不可用,第二步删除表。
disable 'student'
drop 'student'创建多版本表
1
2
3查询表的历史版本,需要两步。
在创建表的时候,指定保存的版本数(假设指定为5)
create 'student',{NAME=>'info',VERSIONS=>5}
总结
以上主要介绍了安装Hbase集群,到对于一些命令的简单使用。不过针对以上在shell命令操作Hbase数据库,实在是太麻烦了,它每次操作都是只能一列一列的玩。所以一般针对Hbase存储都是通过程序来完成的。