Hbase架构入门

Hbase结构图

图片alt
Hbase本身包含三部分,Zookeeper,HMaster,HRegionServer

  • Zookeeper:
    1.保证任何时候只有一个活跃的Master
    2.存储所有的Region的地址,知道哪个Region存储在哪台机器上
    3.时刻监控RegionServer的状态,将RegionServer的上下线信息,RegionServer不直接向HMaster汇报,减轻HMaster的压力,通过Zookeeoer发送信息
    4.存储Hbase的元数据结构(Schema),知道集群中有哪些Table,每个Table有哪些Column Family
  • HMaster:
    1.为所有的RegionServer分配Region
    2.负责RegionServer的负载均衡
    3.发现失效的RegionServer,重新分配上面的Region
    4.HDFS的垃圾文件
    5.处理Schema请求(表的创建,删除,修改,列族的增加等)
  • HRegionServer:负责数据的读写操作,客户端直接和RegionServer交互

RegionServer介绍

  • 一个RegionServer会有多个Region,
  • 每个Region有多个Store
  • 每个Store有多个StoreFile(HFile)
  • 每个Store有一个Memstore

图片alt

客户端通过发请求到RegionServer端,写入的时候会先写入WAL日志中,其次会将数据写入memstore内存,当数据达到一定大小后会flush成一个个的StoreFile(HFile)文件,当文件达到一定数量后,通过compaction的操作合并成更大文件,这样数据读取会更快。

1)HRegion:

(1)、简介:Table在行的方向上分隔为多个Region,Region是HBase中分布式存储和负载均衡的最小单元,即不同的Region可以分在不同的RegionServer上面,但同一个Region是不会拆分到多个Server上面的。随着数据的增多,某个列族的达到一个阈值就会分成两个新的Region。结构:<表名,startRowkey,创建时间>,由目录表(-ROOT-,.META.)记录该Region的endRowkey
(2)、Store:

(1)简介:每一个Region由一个或则多个Store组成,至少是一个Store,HBase会把访问的数据存放在Store中,即每一个列族建一个Store,如果有多个ColumnFamily,就多多个Store,一个Store由一个MemStore和0或则多个StoreFile组成。HBase通过Store的大小判断是否需要切分Region。

(2)MemStore:它是放在内存中的,保存修改的数据,即key/values。当MemStore的大小达到一定的阈值的时候(默认128M),MemStore会被Flush到文件,即生成一个快照StoreFile,Flush过程由一个线程完成。

(3)StoreFile:StoreFile底层是HFile,HFile是Hadoop的二进制格式文件,

(2)HLog:WAL文件,用来灾难恢复使用,HLog记录数据的所有变更,一旦RegionServer宕机,就从HLog中进行恢复,HLog文件就是一个普通的Hadoop Sequence File,Sequence File记录了写入数据的归属信息,除了Table和Region名字外,还同时包括了Sequence Number和TimeStamp,Sequence File的value是HBase的key/value对象,即对应的HFile中的key/value。

Hbase 中的 Compaction

其实Compaction操作属于资源密集型操作特别是IO密集型,这点后面也会提及到,Compaction本质上其实就是牺牲了部分IO,以换取相对稳定的读取性能。
compaction的核心作用是:通过合并大量小文件为一个大文件来减少hfile的总数量,进而保证读延迟的稳定。

HBase Compaction分为两种:Minor Compaction 与 Major Compaction,通常我们简称为小合并、大合并

图片alt

返回笔记列表
入门小站