(Hadoop)HBase分布式数据库

简介

是一个高可靠性、高性能、面向列、可伸缩的分布式数据库。目标是储存并处理大型的数据。有一下特点

  1. 容量大:可以存储成千上万的行和列组成的数据
  2. 面向列:HBase是面向列的存储和权限控制。列存储,其数据在表中是按照每列存储的,根据数据动态怎能更加列,并且可以单独对列进行各种操作。
  3. 多版本:HBase中表的每一个列的数据存储都有多个版本Version。一般的每一列队形一条数据,但是有的数据会对应多个版本。
  4. 稀疏性:由于HBase中表的列允许为空,并且不会占用存储空间,因此表的设计可以非常稀疏
  5. 扩展性:HBase的底层是依赖于HDFS。当磁盘空间不足时,我们可以动态增加机器(DataNode节点)来解决。从而避免像关系型数据库那样,进行数据的迁移。
  6. 高可靠性:由于底层使用的是HDFS二HDFSyou备份机制,所以Spark集群出现严重问题是,Replication(副本)机制能够保证数据不会发生丢失或者损坏。
  • HBase利用HDFS作为文件存储系统,利用MapReduce来处理HBase中海量数据,利用Zookeeper作为协调服务
  1. 存储模式:传统数据库是根据行存储,而HBase是根据列进行存储
  2. 表字段:传统数据库的表字段不能超过30个,而HBase中表字段不不作限制
  3. 可延展性:HBase是根据数据存储的大小去动态增加列,列是不固定的

HBase的数据模型

在这里插入图片描述

Row Key行键

表示行键,每个HBase表中只能有一个行键,它在HBase中以字典的方式存储。在HBase中唯一表示。可以对网站名称进行

Timestamp时间戳

表示时间戳,记录每次操作的时间,通常基座数据的版本号,会自己生产

Column列

HBase的列是由列族名、限定符及列名组成,其中:记为限定符。创建HBase表不需要指定列,因为列是可变的。

Column Family列族

在HBase中列族由很多列组成。在同一表中,不同列族由完全不同的属性,但在统一列都会有相同的属性,而属性都是定义在列族上。c1,c2,c3都是列族名。

HBase的架构

在这里插入图片描述

  1. Client。客户端,他通过RPC协议与HBase进行通信
  2. Zookeeper。分布式协调服务,主要用于监控HRegionServer的状态,将HRegionServer的上下线信息实时通知给HMaster,确保急群众只有一个HMaster在工作
  3. HMaster。HBase的主节点,协调多个HRegionServer,用于监控HRegionServer的状态以及平衡HRegionServer之间的负载。还负责为HRegionServer分配HRegion。
  • 在HBase中如果有多个HMaster节点共存,提供服务的只有一个Master。其他Master处于待命状态。如果当前服务的Master宕机,其他的Master节点会接管HBase集群
  1. HRegionServer。HBase的从节点,他还包含了多个HRegion,主要用于响应用户的I/O请求,向HDFS读写数据
  2. HRegion。HBase表的分片,每个region中保存的是HBase表中的某段连续的数据
  3. Store。每一个HRegion包含一个或者多个Store。每个Store用于管理一个Region上的一个列族
  4. MemStore。内存级缓存,MemStore存放在Store中,用于保存修改的数据。当MemStore存储的数据达到默认128M时数据就会进行flush操作,将数据写入到StoreFile文件。MemStore的flush的操作是由专门的线程负责的
  5. StoreFile。MemStore中数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存在HDFS上
  6. HFile。HBase中键值对类型的数据都是以HFile文件格式进行存储
  7. HLog。预写日志文件, 负责记录HBase的修改。

物理存储

  1. HBase表的数据按照行键Row Key 的字典进行排序,并且切分多个HRegion存储,如5-11
  2. 每个Region存储的数据是有限的,如果当Region增大到默认128M,会被切分成两个新的Region。如5-12
    在这里插入图片描述
  3. 一个HRegionServer上可以存储多个Region,但是每个Region只能被分布到一个HRegionServer上,如5-13
  4. MemStore中存储的是用户写入的数据,一但MemStore存储达到阈值,里面的数据就会别刷新到新生成的StoreFile中(底层是HFIle)。如5-14
    在这里插入图片描述

寻址机制

HBase查询数据的寻址过程
在这里插入图片描述
如查询行键:rk001数据

  1. Client客户端通过访问ZooKeeper来请求行键rk001数据所在的RegionServer地址
  2. Zookeeper从–ROOT表中查询所有.META信息
  3. META表将具体存储行键rk001数据的RegionServer的地址返回给Client,相当于Client是从Zookeeper中MATA表中查询到RegionServer的地址
  4. Client获取到RegionServer地址后直接向该RegionServer发送查询行键为rk001这条数据的请求,RegionServer收到请求,就会查询行键rk001的Region;
  5. RegionServer将行键为rk001的数据的所有信息返回给Client
  • HBase中,又来那个歌特殊的表,分别是ROOT和META表。ROOT只有一个Region,且不会切分而META表中存储着RegionServer,且RegionServer还可以被切分成多个Region。

HBase读写数据流程

读数据流程

  1. Client通过Zookeeper、ROOT表以及META表来找到目标数据所在的RegionServer地址
  2. Client通过请求RegionServer地址来查询目标数据
  3. RegionServer定位到目标数据所在的Region然后发出查询目标数据的请求
  4. Region现在MemStore中查找目标数据,若没有找到则继续在StoreFile中查找

写数据流程

  1. Client根据行键RowKey找到丢应的Region所在的RegionServer
  2. Client向RegionServer发送写入数据的请求
  3. RegionServer找到目标Region
  4. Region检查数据是否与Schema一致
  5. 若Client没有指定版本,则获取当前系统的时间作为数据的版本
  6. 将更新的记录写入预写日志HLog和MemStore中
  7. 半段MemStore是否已满,若满了则进行flush操作,将数据写入StoreFile文件,反之存入MemStore、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值