HBase万字详细原理解析

HBase超详细原理解析


文章目录

  • HBase超详细原理解析
  • 一、HBase数据模型
    • 1.1 逻辑视图与物理视图
    • 1.2 多维稀疏排序Map
  • 二、HBase相关数据结构
    • 2.1 LMS树索引
    • 2.2 布隆过滤器
  • 三、RegionServer核心模块
    • 3.1 HLog
    • 3.2 MemStore
    • 3.3 HFile
    • 3.4 BlockCache
  • 四、HBase读写流程
    • 4.1 HBase写入流程
    • 4.2 HBase读取流程
  • 五、HBase负载均衡(Region迁移和分裂)
    • 5.1 Region迁移
    • 5.2 Region分裂
  • 六、HBase协处理器(Coprocessor)
  • 七、BulkLoad功能
  • 八、HBase系统调优
    • 8.1 HBase GC调优
    • 8.2 HBase操作系统调优
    • 8.3 HBase性能优化
  • 九、HBase缓存设计总结
    • 9.1 客户端Meta表缓存机制
    • 9.2 RegionServer中的写缓存MemStore
    • 9.3 RegionServer中的读缓存BlockCache
  • 十、HBase事务


Java、大数据开发学习要点(持续更新中…)


一、HBase数据模型

  从逻辑视图来看。HBase中的数据是以 表 形式进行组织的,和关系型数据库中的表相同,HBase中的表也由行和列构成。但从物理视图来看,HBase是一个Map,由键值对(K,V)构成,不过与传统的Map不同的是HBase是一个稀疏的、分布式的、多维排序的Map。

1.1 逻辑视图与物理视图

首先看HBase中的基本概念:

  • table:表,一个表包含多行数据。
  • row:行,一行数据包含唯一标识rowkey(按字典序升序排列)多个column以及对应的值。
  • column:列,与关系型数据库的列不同的是,HBase中的column由column family(列簇)以及qualifier(列名)两部分组成。一个列簇下可以设置任意多个qualifier,这也是HBase的列可以动态增加。
  • cell:单元格,由五元组组成(row,column,timestamp,type,value)组成的结构,其中type表示Put/Delete这样的操作类型,timestamp代表这个cell的版本。这个结构在数据库中实际是以KV结构存储的,其中(row,column,timestamp,type)是K,value字段对应V
  • timestamp:时间戳,每个cell在写入HBase的时候都会默认分配一个时间戳作为cell版本。因此,同一个rowkey、column下可以存在多个value,这些value使用timestamp作为版本号,版本越大,表示数据越新

上述概念所组成的HBase逻辑视图如下图所示:
HBase万字详细原理解析_第1张图片
总结上述的概念,HBase逻辑视图中最重要的概念是:

  • HBase引入列簇概念,使得列簇下的列可以动态扩展
  • HBase使用时间戳实现了数据的多版本支持

物理视图如下:
HBase中的数据是按照列簇存储的,即将数据按照列簇分别存储在不同的目录中。

rowkey timestamp columnfamily:f1
rowkey1 t2 f1:qualifier1=value1
rowkey1 t1 f1:qualifier2=value2

从物理视图中可以知道HBase底层存储是列簇式存储
这里简单解释下数据库各种存储方式:
1、行式存储,例如MySQL这类关系型数据库,一行数据存储在一起,所以擅长按行进行数据操作(擅长OLTP);
2、列式存储,例如CK、Parquet文件等,每列数据存储在一起,擅长查询某些列的请求(擅长OLAP);
3、列簇式存储,介于行式和列式存储的一种方式(一部分列存储在一起),考虑极端情况这种方式可以退化成行式和列式存储。(HBase还是擅长于OLTP场景)

1.2 多维稀疏排序Map

  如上节提及的每个cell都是KV存储的,这个结构在数据库中实际是以KV结构存储的,即(row,column family,column qualifier,timestamp,type) -> value。根据这个映射关系来解释多维、稀疏、排序、分布式等关键词:

  • 多维:多维这个关键词好理解,K是复合结构由(row,column family,column qualifier,timestamp,type)组成。
  • 稀疏:稀疏是HBase的重大优势,在传统关系型数据

你可能感兴趣的:(大数据相关,面试,大数据,hbase,数据库,分布式)