HBase的三大组件

HBase 的实现包括三个主要的功能组件:
1)库函数:链接到每个客户端
2)一个Master主服务器
3)许多个Region服务器
主服务器Master负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡
Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求
客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据
客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小

一、Master服务器:

主服务器Master主要负责表和Region的管理工作:
管理用户对表的增加、删除、修改、查询等操作
实现不同Region服务器之间的负载均衡
Region分裂或合并后,负责重新调整Region的分布
对发生故障失效的Region服务器上的Region进行迁移


二、Region服务器

Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求
  Region的定位:
•元数据表,又名.META.表,存储了Region和Region服务器的映射关系
•当HBase表很大时, .META.表也会被分裂成多个Region
•根数据表,又名-ROOT-表,记录所有元数据的具体位置
•-ROOT-表只有唯一一个Region,名字是在程序中被写死的
•Zookeeper文件记录了-ROOT-表的位置

客户端访问数据时的“三级寻址”


•为了加速寻址,客户端会缓存位置信息,同时,需要解决缓存失效问题

•寻址过程客户端只需要询问Zookeeper服务器,不需要连接Master服务器

HBase的三大组件_第1张图片

HBase的三层结构中各层次的名称和作用:

层次

名称

作用

第一层

Zookeeper文件

记录了-ROOT-表的位置信息

第二层

-ROOT-表

记录了.META.表的Region位置信息

-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据

第三层

.META.表

记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息


1.数据读写的过程:
•用户写入数据时,被分配到相应Region服务器去执行
•用户数据首先被写入到MemStore和Hlog中
•只有当操作写入Hlog之后,commit()调用才会将其返回给客户端
•当用户读取数据时,Region服务器会首先访问MemStore缓存,如果找不到,再去磁盘上面的StoreFile中寻找

2. 缓存的刷新:

•系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记
•每次刷写都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件
•每个Region服务器都有一个自己的HLog文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作;如果发现更新,则先写入MemStore,再刷写到StoreFile,最后删除旧的Hlog文件,开始为用户提供服务

3. StoreFile的合并

•每次刷写都生成一个新的StoreFile,数量太多,影响查找速度
•调用Store.compact()把多个合并成一个
•合并操作比较耗费资源,只有数量达到一个阈值才启动合并


3.1 Store工作原作原理

•Store是Region服务器的核心
•多个StoreFile合并成一个
•单个StoreFile过大时,又触发分裂操作,1个父Region被分裂成两个子Region
HBase的三大组件_第2张图片


HBase的日志系统HLog:

分布式环境必须要考虑系统出错。 HBase 采用 HLog 保证系统恢复
HBase 系统为每个 Region 服务器配置了一个 HLog 文件,它是一种预写式日志( Write Ahead Log
用户更新数据必须首先写入日志后,才能写入 MemStore 缓存,并且,直到 MemStore 缓存内容对应的日志已经写入
磁盘,该缓存内容才能被刷写到磁盘


HLog的工作原理:

Zookeeper 会实时监测每个 Region 服务器的状态,当某个 Region 服务器发生故障时, Zookeeper 会通知 Master

Master 首先会处理该故障 Region 服务器上面遗留的 HLog 文件,这个遗留的 HLog 文件中包含了来自多个 Region 对象
的日志记录

系统会根据每条日志记录所属的 Region 对象对 HLog 数据进行拆分,分别放到相应 Region 对象的目录下,再 失效
Region 重新分配到可用的 Region 服务器中,并把与该 Region 对象相关的 HLog 日志记录也发送给相应 Region 服务器

Region 服务器领取到分配给自己的 Region 对象以及与之相关的 HLog 日志记录以后,会重新做一遍日志记录中的各
操作,把日志记录中的数据写入到 MemStore 缓存中,然后,刷新到磁盘的 StoreFile 文件中,完成数据恢复

共用日志优点:提高对表的写操作性能;缺点:恢复时需要分拆日志


你可能感兴趣的:(HBase的三大组件)