赞
踩
1.hbase的底层逻辑架构
2.hbase的底层物理存储原理
3.hbase的寻址机制
4.hbase的读写过程
5.master和Regionserver的工作机制
这是旧版本的hbase的架构图,一个regionserver中只有一个Hlog。
这一张是新版本的图,每一个regionserver中可以有30个Hlog。
老版本和新版本的变动:
上图是一个regionserver的存储
一个region由多个store组成,每一个store包含一个列簇的所有数据,一个region由多个store组成,每一个store包含一个列簇的所有数据。
Store 包括位于内存的一个 Memstore 和位于硬盘的多个 Storefile 组成
原理:
StoreFile 以 HFile 格式保存在 HDFS 上,请看下图 HFile 的数据组织格式:
其中:首先 HFile 文件是不定长的,长度固定的只有其中的两块:Trailer 和 FileInfo。
其中,除了trailer和fileinfo两个定长的数据以外,其他的数据都可以进行压缩。
data中的K-V键值的介绍:
两个固定长度的数值,分别表示key的长度和value的长度。紧接着是key,开始是固定长度的数值,表示rowkey的长度,紧接着是rowkey,然后是固定长度的数值,紧接着是列簇名(最好是16),接着是 Qualifier(列名),然后是两个固定长度的数值,表示 TimeStamp 和 KeyType(Put/Delete)。Value 部分没有这么复杂的结构,就是纯粹的二进制数据了。
WAL 意为 Write ahead log,用于做灾难恢复的,HLog 记录数据的所有变更,一旦数据修改,就可以从 Log 中 进行恢复。
灾难恢复的解释:开始的时候region的数据时存储在内存中的metestore,此时还没有达到阈值,数据仍在内存中,没有持久化到磁盘,如果此时机器突然宕机,储存在内存的数据,会丢失,此时需要hlog进行数据的恢复。但是hlog只会保存,在没有同步到磁盘中的那部分操作的日志,已同步到磁盘的数据,那部分的日志,会被存放到oldWAL目录下,10分钟后删除。
HLog 的文件结构:
介绍 :读写是在regionserver上发生,每个 RegionSever 为一定数量的 Region 服务,如果client要对某一行数据做读写的时候,我们该访问哪一个regionserver?,可以使用寻址的方式解决。
解释:
- 客户端通过zookeeper以及-root-表和.mate.表找到目标数据所在的regionserver(寻址)
- 联系regionserve查询目标数据
- Region先在memstore中查找,命中则返回
- 如果memstore找不到,则在storefile中扫描 , 为了能快速的判断要查询的数据在不在这个 StoreFile 中,应用了 BloomFilter(布隆过滤)
任何时刻,一个region只能分配一个regionserver。Master记录了当前有哪些可用的regionserver。以及当前哪些region分配给了哪些regionserver,哪些region还没有分配。当需要分配新的region的时候,master就给一个有可用空间的regionserver发送装载region的请求。把这个region分配个这个regionserver。
Master 使用 zookeeper 来跟踪 RegionServer 状态。当某个 RegionServer 启动时,会首先在 ZooKeeper 上的 server 目录下建立代表自己的 znode。由于 Master 订阅了ZooKeeper server 目录上的变 更消息,当 server 目录下的文件出现新增或删除操作时,Master 可以得到来自 ZooKeeper 的实时通知。因此一旦 RegionServer 上线,Master 能马上得到消息
当 RegionServer 下线时,它和 zookeeper 的会话断开,ZooKeeper 而自动释放代表这台 server 的文件上的独占锁。Master 就可以确定,regionserver和zookeeper之间无法通行了,regionserver可能宕机了。
由于master只维护表和region的元数据,而不参与数据IO的过程,master下线仅导致所有的元数据的修改被冻结(无法创建表,无法修改表的schema,无法进行region的负载均衡),表的数据读写还可以正常进行。因此master可以短暂的下线。从上线过程可以看到,Master 保存的信息全是可以冗余信息(都可以从系统其它地方 收集到或者计算出来)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。