1.HBase介绍
特点
- NoSql数据库
:面向列存储数据 - 内存存储机制
HBase表
- 每行数据都有一个主键:rowkey
- 一个表中:包含一个或多个列簇(Column Family)CF
- 某个字段属于某个列簇,一个列簇下面可以有百万个列
- HBase存储数据的本质,可以理解为键值对存储:
key: row+CF+column+timestamp
value:需要存储的值(值是二进制存储)
HBase数据库功能
- 数据存储:
HDFS,存3份,数据安全性比较好 - 检索数据(查询数据):
2.HBase 体系
主从架构
-
主节点(HMaster):
用来管理表 -
从节点(HRegionServer)
真正存储数据的地方,Client读取表中数据就是找regionServer
辅助框架zookeeper
存储HBase相关配置信息及元数据。
安装步骤
zookeeper
HDFS
HBase
3.HBase安装(伪分布式)
文档:https://hbase.apache.org/book.html#quickstart
(1)启动相关进程
(2)上传解压
(3)修改配置
- hbase-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export HBASE_MANAGES_ZK=false - hbase-site.xml
(4)启动HBase节点
- 主节点
bin/hbase-daemon.sh start master - 从节点
bin/hbase-daemon.sh start regionserver
(5)检查是否启动
方式一:jps
方式二:web ui
apache:16010
cdh:60010
简单测试
-
HBase提供交互式命令
bin/hbase shell
-
基本命令
4.HBase的存储模式(架构)
- HBase在存储数据的时候,将数据划分为很多部分(类似于HDFS存储,将文件划分为很多block)
- 按照rowkey划分,划分的每一部分为region(区域)
一个region由一个regionServer进行管理,一个regionserver管理者多个region
需要操作一个region上的数据,必须找到regionserver
总结:
HBase的表按照rowkey->region
region->一个或多个store(到底有几个,根据有多少个簇决定)
一个store包含一个menstore(内存中),和0或多个storeFile决定(HDFS)
5.HBase表中检索数据的方式
方式一:全部扫描
scan
方式二:单条获取:速度最快
get rowkey
方式三:范围查询 :使用最多
scan 设置查询范围的条件rowkey
存储是按照rowkey排序的
rowkey:reverse(userid) +orderid
查找某一个用户的订单:get reverse(userid)
6.系统表介绍
meta:
存储着所有用户region,只有一个region
Client向HBase表中写入数据
1.client表向 ZKcluster获取meta表region所在的regionserver信息(得到meta表的regionserver的地址)
2.client到meta标的regionserver上读取meta报数据(region属于哪个regionserver)
3.client到要写写入表的region的regionserver中写入数据
总结:
第一点:
如果zookeeper cluster挂掉,整个Hbase集群就会挂掉,用户不能读写hbase上的数据
第二点:
如果hbase muster挂掉,暂不会影响hbase集群的读写,短暂情况下可以,长时间不保证。