Habse基础知识回顾

  14年在烽火做过Hbase的相关项目。

  时隔4年,接触的项目都没有用到Hbase。今天,简单回顾一下hbase的基本概念。

  既然是随笔,想到什么就写什么。

  【1】首先Hbase是列式的分布式存储系统。把需要经常同时访问的数据,定义在一个列族里。
    Hbase Table=Rowkey + Family + Column + Timestamp + Value

  【2】数据存储原型:
  先按照rowkey字典排序,再按照column字典排序

  【3】压缩方式:
  snappy压缩率低,但是压缩速度和解压速度很快。hbase默认压缩方式。压缩是以CPU资源换取磁盘资源。

  【4】hbase元信息表:Meta Table
  是Hbase的第一级索引。
  存储了Region的信息。rowkey是table+startkey+time 0.96版本以前,是由Root表来维护,之后版本Meta表直接存储在Zookeeper
  上,用户查数据时,先要去zookeeper上查Meta表。

  【5】LSM树:
  1.第一层,写入内存
  2.第二层,超过阈值内存到磁盘
  3.第三层,异步线程多路归并数据
  RegionServer = Region + Store(一个列族对应一个) + MemStore + StoreFile + Hfile + HLog

  Hbase中的LSM存储思想:
  用户数据会最先写入HLog,防止当机造成数据丢失,实现高可用,第二步才会写入MemStore。(快速写入,第一层)
  MemStore达到阈值,flush到磁盘形成storeFile,最终形成HFile(第二层)
  Hbase Compaction(第三层)
  Minor Compaction(小合并):相邻Hfile小文件
  Major Compaction(大合并):一个store中的所有Hfile文件,会删除3类数据,默认7天
  (1)keytype是delete的数据,
  (2)TTL过期数据
  (3)版本过期数据,version
  一般线上业务会关闭自动大合并,采取手动大合并,因为大合并,比较消耗性能,会对业务造成影响。

  Region是Hbase负载均衡的最小单元,但是存储的最小单元是HFile

  Hbase的rowkey设计需要主要尽可能的把数据分散到各个Region块上,避免出现RegionServer热点问题,压力过大。达不到负载均
  衡。

  【6】HFile墓碑标记:
  Hfile的data block是keyValue结构,由于hfile一旦写入,就不会再被修改,所以删除数据的时候,不会立马被删除,而是会有
  一个keytype(4种状态,put,delete,deleteColumn,deleteFamily)的字段来标时。

  【7】WAL(预写日志):
  用来做灾难恢复。通过回放日志来恢复到hbase崩溃之前的状态。

  【8】BloomFilter:
  多哈希,多位置。
  在hbase中的应用:是列族级别,提升hbase的随机读性能。分为row和rowcol。

猜你喜欢

转载自www.cnblogs.com/superzzh/p/9862465.html