hbase基础大全

hbase概述

在这里插入图片描述

  • 是一个面向列存储的NoSQL数据库
  • 是一个分布式Hash Map,底层数据是Key-Value格式
  • 基于Google Big Table论文
  • 使用HDFS作为存储并利用其可靠性

HBase特点

  • 数据访问速度快,响应时间约2-20毫秒
  • 支持随机读写,每个节点20k~100k+ ops/s
  • 可扩展性,可扩展到20,000+节点
  • 高并发

HBase物理架构

在这里插入图片描述

  • ZooKeeper

     1、存储-ROOT-表和.META.表的位置,.META.表记录普通用户表的HRegion标识符的信息(元数据的入口)
     2、客户端访问数据前先访问ZooKeeper->-ROOT-表->.META.表
     3、监控各个机器的状态,当HRegionServer发生故障,通知HMaster进行HRegion迁移;
     4、ZooKeeper负责恢复HMaster(高可用)
    
  • HMaster

     1、是HBase集群的主节点,可以配置多个,用来实现HA
     2、管理用户对表的增删改查
     3、管理HRegionServer的负载均衡,调整HRegion分布
     4、在HRegion分裂后,负责新的HRegion分配
     5、在HRegionServer停机后,负责失效HRegionServer上的HRegion迁移
     6、通过ZooKeeper发布自己的位置给客户端
    
  • HRegionServer

     一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
     WAL(Write-Ahead logfile)预写日志:数据在写入内存之前会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建
     1、负责和底层HDFS的交互,存储数据到HDFS,HBase是依托于HDFS的NoSQL数据库,数据会存储在HDFS上
     2、负责响应用户的I/O请求,向HDFS中读写数据,刷新缓存到HDFS
     3、处理分配给它的HRegion,负责处理HRegion变大后的拆分
     4、负责StoreFile的合并工作
     5、维护HLog(用于存储数据日志,HLog文件用于故障恢复)
    
  • HRegion

     1、可以看成是表的横向切分,HBase表的分片
     2、HBase每个表都会根据RowKey值被切分成不同的HRegion分散存储在HRegionServer 中
     3、HRegionServer中可以有多个不同的HRegion,一个HRegion只能在一个HRegionServer 上,不能跨多个HRegionServer
     4、每一个Region内部,又分为多个 Store,一个Store对应表中的一个列族
     5、一个Store包含多个StoreFile和MemStore组成
     6、一个StoreFile对应于一个HFile和一个列族
     7、StoreFile是以HFile的形式存储在HDFS的,文件内容是二进制
     8、MemStore:是内存存储,用来保存当前的数据操作,所以当数据保存在WAL中之后,HRegsionServer 会在内存中存储键值对
    

HBase 数据存储结构

  • RowKey

     1、是用来检索记录的主键
     2、可以是任意字符串,最大长度是64KB
     3、在HBase内部,RowKey保存为字节数组;存储时数据按照 RowKey 的字典序排序存储
    
  • Column Family

     1、Region,将一个表横向上切成多个 Region,列族是在纵向进行切分的,将多列分成一组进行管理
     2、每一个列族对应一个Store,也对应HDFS一个目录
    
  • Cell

     1、由{RowKey, ColumnFamily, Version} 唯一确定的单元。其中 Versions 实际上是TimeStamp。
     2、Cell 可以看成是一个存储空间,类似与 Excel 中的单元格,Cell 中的数据是没有类型的,全部是字节码形式存储。
    
  • Time Stamp

     1、每个 Cell 都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64 位整型
     2、时间戳可以由 HBase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间。时间戳也可以由客户显式赋值
     3、每个 cell 中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面
    

HBase 原理

  • 元数据存储

     1、HBase中有一个系统表 hbase:meta存储HBase元数据信息
     2、该表记录保存了每个表的Region地址,还有一些其他信息,例如Region的名字,对应表的名字,开始行键,结束行键,服务器的信息
    
  • 读流程

在这里插入图片描述

1.Client先访问ZooKeeper,通过ZooKeeper的“/hbase/meta-region-server”获取存储“hbase:meta”表的HRegionServer的地址;
2.根据RowKey在meta表中找到对应的Region信息;
3.找到这个Region对应的RegionServer,并发送读数据请求;
4.先从MemStore找数据,如果没有,再到BlockCache里面读;
5.BlockCache还没有,再到StoreFile上读(为了读取的效率);
6.如果是从StoreFile里面读取的数据,不是直接返回给客户端,而是先写入BlockCache,再返回给客户端。
  • 写流程

在这里插入图片描述

1、Client访问ZooKeeper,获取Meta表所处HRegionServer位置
2、访问Meta表,然后读取Meta表中的数据。
3、根据namespace表名和RowKey在Meta表中找到该RowKey应该写入到哪个Region。
4、找到这个Region对应的RegionServer,并发送写数据请求
5、HRegionServer将数据先写到HLog(Write Ahead Log),为了数据的持久化和恢复;
6、HRegionServer将数据写到内存(MemStore);
7、反馈Client写成功。	
  • 数据Flush过程

     1、memstore->(memstore达到阀值)启动flashcache->storefile
     2、每次写操作单独生成一个storefile,当storefile达到一定的数量系统会合并成更大的storefile
     3、当region上的所有storefile大小和数量达到阀值,会分裂成两个region
     4、再由hmaster分配分裂除的region到相应的regionserver上,实现负载均衡
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值