Hbase架构设计
Posted 人工智能时代AI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase架构设计相关的知识,希望对你有一定的参考价值。
Hbase特点
Hbase架构
架构原理图
1.HBase客户端
2.ZooKeeper
3.Master:负责HBase系统的各种管理工作
4.RegionServer
5.HDFS
详情原理请往下细细品~
Hbase组件作用
ZK在Hbase作用
1、实现Master高可用
3、参与RegionServer宕机恢复
Master主要负责HBase系统的各种管理工作
1、处理用户的各种管理请求,包括建表、修改表、权限操作、切分表、合并数据分片以及Compaction等
2、管理集群中所有RegionServer,包括RegionServer中Region的负载均衡、RegionServer的宕机恢复以及Region的迁移等
3、清理过期日志以及文件,Master会每隔一段时间检查HDFS中HLog是否过期、HFile是否已经被删除,并在过期之后将其删除
Hbase组件作用
RegionServer
RegionServer主要用来响应用户的IO请求,是HBase中最核心的模块,由WAL(HLog)、BlockCache以及多个Region构成。
·WAL(HLog):
1、用于实现数据的高可靠性,HBase数据随机写入时,并非直接写入HFile数据文件,而是先写入缓存,再异步刷新落盘。为了防止缓存数据丢失,数据写入缓存之前需要首先顺序写入HLog,这样,即使缓存数据丢失,仍然可以通过HLog日志恢复;
2、用于实现HBase集群间主从复制,通过回放主集群推送过来的HLog日志实现主从复制。
·BlockCache:读缓存
Region内部结构
HRegion:一个Region可以包含多个Store;
Store:每个Store包含一个Memstore和若干个StoreFile;
StoreFile:表数据真实存储的地方,HFile是表数据在HDFS上的文件格式。
Hbase读流程
从zk获取meta表位置
先读取内存-在读取磁盘的顺序
先读memstore数据,如memstore数据没有则读取blockCache中数据
如blockCache数据未命中周日读取HDFS中数据 存储
再取数据则优先从blockCache中取
数据返回给客户端
Region内部结构
RegionServer是HBase系统响应用户读写请求的工作节点组件,由多个核心模块组成,其内部结构如图所示。
Hbase-客户端Region定位
Hbase写流程
从zk获取meta表位置
以追加形式写入wal日志落HDFS
将数据存储memstor中
WAL和memstor在返回客户端ack
思考:查询sequenceld≤101
返回数据是哪几条?
HBase Region Flush
LSM->Log-Structured Merge-Tree
Hbase数据模型
跳跃表的查找、删除、插入的复杂度都是O(logN)
LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写,
因此基于HDFS实现的HBase采用LSM树作为索引是一种很合适的选择。
LSM树的索引一般由两部分组成,一部分是内存部分,一部分是磁盘部分。
内存部分一般采用跳跃表来维护一个有序的KeyValue集合。
磁盘部分一般由多个内部KeyValue有序的文件组成。
HBase Compaction
------------------------------------------------------
千里之行之行始于足下
以上是关于Hbase架构设计的主要内容,如果未能解决你的问题,请参考以下文章