【每日五分钟搞定大数据】系列,HBase第三篇
缓存
聊完场景和数据模型咱们来讲下HBase的架构,在网上找了张比较清晰的图,我以为这张图能说明不少问题,那这一篇咱们就重点来解析下这张图服务器
先介绍下上图中的几个角色和Ta们的职责:架构
1.HMaster负载均衡
2.Client分布式
Client包含访问HBase的接口,并维护cache(region的位置信息)来加快对HBase的访问大数据
3.Zookeeperspa
在以前的Zookeeper篇讲过HBase和Zookeeper的联系,忘记地同窗能够去翻一下。3d
4.HRegionSeverserver
即一台服务器,拥有一个到多个HRegionblog
图里HRegionServer里面的内容不少,你们可能会看得有点懵,咱们来详细说下这个HRegionServer里面的东西。
HRegionServer 包含 (1+)个 Region
一个 HRegionServer 包含一到多个Region,而Region就是一张HBase表按必定阈值横向切割的一部分。
Region按大小分割的,每一个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,以后会有愈来愈多的region;
Region是Hbase中分布式存储和负载均衡的最小单元,不一样Region分布到不一样RegionServer上;
Region 包含 (1+)个 Store = columns family 列族个数
Region由一个或者多个Store组成,每一个store保存一个columns family;
Store 是一个抽象的概念就是一个存储,它的个数和HDFS上的存储目录个数是一致的,而一个存储目录对应的就是一个columns family列族。
Store 包含(1)个 MemStore +(0+)个 StoreFile
Store 上面说了就是一个存储,他包含了一个内存的存储和0+个文件存储,一个Store的全部文件都存在一个目录下,这个目录下的全部文件对应的是一个列族。
注意:
上面说得可能有点抽象,咱们来看具体的数据:
咱们来沿用下上一篇的那个表:
如表:
假设这张表有几万行,一行就表明一万行,那可能A和B多是属于RegionA,C和D多是属于RegionB,
RegionA和RegionB可能分布在不一样的RegionServer上,
可见,RegionA有两个列族,CF1和CF2,
即它有两个Store,
即在HDFS上有两个目录分别用于存放CF1和CF2,
即CF1和CF2在内存里也分别各对应了一个MemStore
这里先讲个大概,后面的文章我会每一步详细分析,好比region的分裂过程,StoreFile的合并过程,rowkey的定位详细流程等等,欢迎持续关注。
.META.:根据给定的key找到RegionServer。.META.记录全部的用户空间region列表,以及RegionServer的服务器地址。
把数据分别写到HLog和MemStore上一份
MemStore达到一个阈值后则把数据刷成一个StoreFile文件。若MemStore中的数据有丢失,则能够总HLog上恢复
当多个StoreFile文件达到必定的大小后,会触发Compact合并操做,合并为一个StoreFile,这里同时进行版本的合并和数据删除。
当Compact后,逐步造成愈来愈大的StoreFIle后,会触发Split操做,把当前的StoreFile分红两个,这里至关于把一个大的region分割成两个region
client端会对数据块缓存
在hlog中作标记点。
注意:hlog会同步到hdfs