Hbase的概况
Hbase数据库简介
数据库分为两种rdbms(关系型数据库)nosql(非关系型数据库)
rdbms类型的数据库,主要是面向行存储的数据库,主要适用于事务性要求严格的场合,
或者说面向行存储的存储系统适合OLTP
rdbms为了实现强一致性通过严格的ACID事物来同步,牺牲了可用性,伸缩性.
nosql为了实现高可用性牺牲一致性.
Hbase是一个面向列的分布式存储系统,高可用,高并发,对数据透明切分,具备伸缩性.
Hbase数据模型
两个主要的概念,Row key,Cloumn Family(列族),列族是在系统启动之前事先定义好的,
每一个列族都可以根据’限定符’有多个列.
文字表现的始终比较模糊,我们直接上图进行分析,
表:hbase采用表来组织数据,表由行和列来组成,列划分为若干的列族.
行:每个hbase都有若干行组成,每一行都由行键(row key)来标识.
列族:一个hbase表被分为许多的列族(column family)的集合,他是基本的的访问控制单元.
列限定符:列族里的数据通过限定符(或列)来定位.
单元格:在hbase的表中,通过行,列族和列限定符确定一个单元格(cell)单元格中储存的数据没有数据类型,全部被视为字节数组byte[]
时间戳:每个单元格都保留着一份数据的多个版本,这些版本都是采用时间戳进行索引的.
hbase的实现原理
hbase中主要有单个功能组件
1.库函数:连接到每个客户端
2.一个master主服务器,分配任务,负载均衡
3.许多region(区)服务器,储存维护,处理客户端读写要求.
客户端不依赖master,而是通过zookeeper来分配任务的,多数客户端不合master通信,是的master的负载很小
在hbase中构建SQL引擎
1.易使用,SQL方便人们理解可以轻松使用
2.减少代码,SQL语言层次到,代码量少
解决方案
hbase整合hive,这个方案在hbase0.60版本以后开始出现,利用两者的通信接口,依靠hive_habae-handler.jar工具包,
因为hbase中有过一次较大的版本变动,所以不是所有的hive版本都能和现有的hbase整合,特别注意两个版本的一致性.
构建hbase二级索引
hbase只有一个针对行键的索引,访问hbase表中的行,只有三种方式
1.通过单个行键访问
2.通过一个行键的区间来访问
3.权表扫描
hbase的安装
1.启动zookeeper集群手写好的脚本start-zoo.sh
[root@doit01 zookeeper-3.4.6]# sh start-zoo.sh
2.启动hdfs
start-dfs.sh
3.上传解压hbase-2.0.4-bin.tar.gz
4.hbase配置
修改hbase-env.sh
export JAVA_HOME=/usr/apps/jdk1.8.0_141/
export HBASE_MANAGES_ZK=false
修改hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://doit01:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>doit01:2181,doit02:2181,doit03:2181</value>
</property>
</configuration>
regionservers配置 启动集群中的regionserver机器
doit01
doit02
doit03
集群分发
启动
启动方式1
[root@doit01 hbase-2.0.4]# ntpdate 0.cn.pool.ntp.org //同步时间
[root@doit01 hbase-2.0.4]# bin/hbase-daemon.sh start master
[root@doit01 hbase-2.0.4]# bin/hbase-daemon.sh start regionserver
//提示机器之间时间同步 tnpdate time1.aliyun.com 否则会出现'ClockOutSyncException'
启动方是2
//一键启动
[root@doit01 hbase-2.0.4]# bin/start-hbase.sh
//一键关闭
[root@doit01 hbase-2.0.4]# bin/stop-hbase.sh
//页面访问
http://doit01:16010/master-status
//shell客户端
hbase shell
启动方式3
#HBASE的群起脚本:用于方便一次性启动所有的节点的HBASE的所有服务!
[root@doit01 hbase-2.0.4]# vi start-hbase.sh
#!/bin/bash
for i in 1 2 3
do
ssh doit0${i} "source /etc/profile;/usr/apps/hbase-2.0.4/bin/start-hbase.sh"
done
hbase shell客户端通用命令
status: 查看HBase的状态,例如,服务器的数量。
hbase(main):002:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 0.0000 average load
Took 2.1936 seconds
version: 提供正在使用HBase版本。
hbase(main):003:0> version
2.0.4, r205e39c5704bf38568b34926dde9f1ee76e6b5d0, Fri Dec 28 22:13:42 PST 2018
Took 0.0003 seconds
whoami: 提供有关用户的信息。
hbase(main):004:0> whoami
root (auth:SIMPLE)
groups: root
Took 0.0452 seconds
create_namespace 创建名称空间
describe_namespace 查看名称空间的描述信息
drop_namespace 删除一个名称空间
list_namespace 查看系统中的名称空间
list_namespace_tables 列举出一个名称空间下所有的表