Hbase架构设计

Posted 人工智能时代AI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase架构设计相关的知识,希望对你有一定的参考价值。

1

Hbase特点 


2

Hbase架构 

Hbase架构设计

架构原理图


1.HBase客户端
2.ZooKeeper
3.Master:负责HBase系统的各种管理工作
4.RegionServer
5.HDFS
详情原理请往下细细品~


3

Hbase组件作用

ZK在Hbase作用

1、实现Master高可用

3、参与RegionServer宕机恢复


Master主要负责HBase系统的各种管理工作

1、处理用户的各种管理请求,包括建表、修改表、权限操作、切分表、合并数据分片以及Compaction等

2、管理集群中所有RegionServer,包括RegionServer中Region的负载均衡、RegionServer的宕机恢复以及Region的迁移等

3、清理过期日志以及文件,Master会每隔一段时间检查HDFS中HLog是否过期、HFile是否已经被删除,并在过期之后将其删除


4

Hbase组件作用 

RegionServer

RegionServer主要用来响应用户的IO请求,是HBase中最核心的模块,由WAL(HLog)、BlockCache以及多个Region构成。


·WAL(HLog):

1、用于实现数据的高可靠性,HBase数据随机写入时,并非直接写入HFile数据文件,而是先写入缓存,再异步刷新落盘。为了防止缓存数据丢失,数据写入缓存之前需要首先顺序写入HLog,这样,即使缓存数据丢失,仍然可以通过HLog日志恢复;

2、用于实现HBase集群间主从复制,通过回放主集群推送过来的HLog日志实现主从复制。


·BlockCache:读缓存



5

Region内部结构 

HRegion:一个Region可以包含多个Store;

Store:每个Store包含一个Memstore和若干个StoreFile;

StoreFile:表数据真实存储的地方,HFile是表数据在HDFS上的文件格式。

Hbase架构设计



6

Hbase读流程 

Hbase架构设计

  • 从zk获取meta表位置

  • 先读取内存-在读取磁盘的顺序

        先读memstore数据,如memstore数据没有则读取blockCache中数据

        如blockCache数据未命中周日读取HDFS中数据 存储

        再取数据则优先从blockCache中取

  • 数据返回给客户端


7

Region内部结构 

RegionServer是HBase系统响应用户读写请求的工作节点组件,由多个核心模块组成,其内部结构如图所示。

Hbase架构设计



8

Hbase-客户端Region定位 

Hbase架构设计




9

Hbase写流程 

Hbase架构设计

  • 从zk获取meta表位置

  • 以追加形式写入wal日志落HDFS

  • 将数据存储memstor中

  • WAL和memstor在返回客户端ack



10

思考:查询sequenceld≤101

返回数据是哪几条? 

Hbase架构设计



11

HBase Region Flush 

Hbase架构设计



12

LSM->Log-Structured Merge-Tree

Hbase架构设计



113

Hbase数据模型 

  • 跳跃表的查找、删除、插入的复杂度都是O(logN)

  • LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写,

  • 因此基于HDFS实现的HBase采用LSM树作为索引是一种很合适的选择。

  • LSM树的索引一般由两部分组成,一部分是内存部分,一部分是磁盘部分。

  • 内存部分一般采用跳跃表来维护一个有序的KeyValue集合。

  • 磁盘部分一般由多个内部KeyValue有序的文件组成。




14

HBase Compaction 


------------------------------------------------------

千里之行之行始于足下

以上是关于Hbase架构设计的主要内容,如果未能解决你的问题,请参考以下文章

HBase 的架构及设计

Hbase架构设计

如何设计 Hbase 架构以实现高性能

HBase架构设计

Hbase基础(特点架构应用场景集群搭建HA设计)这一篇就够了

如何为传感器网络设计 HBase 架构?