Hbase

一、什么是Hbase
作用:Hbase就是Hadoop的一个超小型的数据库 是一种高可靠性(能很好的解决单点问题)、高性能、面向列(和数据的存放方式有一定的关系)、可伸缩、实时读写的分布式(是基于HDFS存储的)数据库,主要用来存储非结构化和半结构化的松散数据

原理:利用Hadoop HDFS作为文件储存系统,利用Hadoop MapReduce来处理Hbase中的海量数据、利用Zookeeper作为分布式协同服务

Hbase是基于HDFS之上的 四维数据库
数据库又分为关系型数据库和非关系型数据库
非关系型数据库好的地方在于非常灵活

Hbase中的表的特点
1、大:一张表存在上亿行
2、面向列:面向列(族)的存储和权限控制,列(族)独立检索
3、稀疏:对于空(null)的咧,并不占用存储空间。因此,表可以设计的非常稀疏

由于Hbase作为一个数据库 需要对数据进行增删改查,所以所有文件的存放都是基于HDFS的 ,在利用Zookeeper作为分布式协调系统

二、Hbase的数据模型

1、Row key表示行号(1、是一行数据的主键并且唯一,2、我们插入数据或者查询数据都是通过Row key进行标识,3、进行存放时会默认按照字典序进行排序)
插入数据的方式有两种
(1)、手动插入 这种插入方式可能会出现重复的 而且会比较慢
(2)、自定插入 key生成的策略生成的数据要唯一
Row key只能使用64k的数据
2、Time Stamp表示时间戳 精确到毫秒
Hbase是不能修改底层文件的 ,这时候Hbase有一个版本号 而这种版本号就是完全由当前时间的毫秒数构成的
数据的长度为64个字节
时间戳具有唯一性
3、Column Family(CF)表示列族
权限控制和调优都在列族中进行
Hbase存储列簇的时候统一存储在同一目录下
4、单元格cell
cell中的数据是没有任何数据类型,全部使用字节存储

二、Hbase框架

1、Client
包含访问Hbase的接口并维护cache来加快对Hbase的访问
2、Zookeeper
1、保证任何时候,集群中只有一个master
2、存储所有Region的寻址入口
3、实时监控Region server的上线和下线信息。并实时通知Master
4、存储Hbase的schema和table元数据

3、Master
1、为Region server分配region
2、负责Region server的负载均衡
3、如果Zookeeper通知Master管理RegionServer下线,Master会将他存放的Region转移
4、管理用户对表的DDL语句

4、RegionServer
1、Region server维护region 处理对这些region的IO请求
2、Region server负责切分在运行过程中变得过大的region

5、Region
Hbase自动把表水平划分成多个区域(region)每个region会保存表里面某段连续的数据
每个表一开始只有一个region ,随着数据不断插入表,region不断变大,当增值到一个阈值的时候,region就会分成2个相同新的region(裂变 )
当table中的行不断增多,就会有越来越多的region,这样一张完整的表被保存在多个Region server上

三、存放数据的流程
1、创建表
客户端将请求发送给Master
Master给出响应在某个RegionServer上创建Region
创建表的元信息会存储在zookeeper中
2、数据的曾删改查
首先我们查找当前操作的表对应那个Region
Region对应RegionServer,这个信息直接去Zookeeper上查找
为了提高数据操作效率,首先将数据写入到Memstore
如果数据在内存放到阈值,开始溢写成StoreFile 于是一个Store里面会有很多个StoreFile
随着时间的推移 StoreFile越来越多 导致Rowkey变多
查询的时间越来越长 那么RegionServer发现Region达到阈值10G的时候,开始将Region一分为二,但是切分的时候并不是严格意义上的等分 ,而是按照rowkey对应的完整记录切分,这样就可以保证一条数据可以完整保存正在一个region里面 从而增加查询效率

四、数据安全问题
1、假如刚写入数据到menstore中就断电
2、HLog是一个基于SequenceFile
1、Key
region信息
table信息
版本号信息timestarmp
队列编号
2、vaule
key
vaule
3、做任何操作之前,先将本次操作信息记录到HLog中
4、数据写出的问题
5、客户查询数据的时候,优先去menStore中去查找,找不到再去文件中查找

五 、Blockcache
Hbase上RegionServer的内存分为两个部分,一个部分作为Memstore,主要用来写;另一个部分作为BlockCache,主要用于读。

六、Hbase过滤器
所有的过滤器都在服务端生效 俗称谓语下推,这样可以保证被过滤掉的数据不会被传送到客户端
Hbase的查询快 的原因就是因为Rowkey定位精准,如果使用正则或者部分匹配,则需要全表遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值