HBase架构中各组件功能及联系

HBase架构中各组件功能及联系,第1张

HBase架构中各组件功能及联系

文章目录
    • 1. 架构图
    • 2. 各组件功能作用
      • 1.Client
      • 2. zookeeper
      • 3. HMaster
      • 4. RegionServer
      • 5. Hlog
      • 6. Region
      • 7. Store
      • 8. MemStore
      • 9. StoreFile
      • 10. HFile

1. 架构图

2. 各组件功能作用 1.Client
  1. 整个Hbase集群的访问入口,并维护cache来加快对Hbase的访问

  2. 使用Hbase RPC机制与HMaster和HRegionServer进行通信

  3. 与HMaster通信进行表的DDL *** 作

  4. 通过zookeeper下的meta表,获取region位置。与HRegionServer进行数据读写类 *** 作

2. zookeeper
  1. 存储hbase表元数据
1). 在新版本中,Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 
Region Server。访问对应的 Region Server,获取 hbase:meta 表,根据读
请求的 namespace:table/rowkey,查询出目标数据位于哪个 Region Server 
中的哪个 Region 中。并将该 table 的 region 信息以及 meta 表的位置信息
缓存在客户端的 meta cache,方便下次访问。与目标 Region Server 进行通
讯;
2). 在老版本中,Hmaster启动时候会将hbase系统表-ROOT-加载到zookeeper cluster,通过zookeeper 
cluster可以获取当前系统表.meta.的存储所对应的regionserver信息
  1. HMaster、RegionServer容错

  2. hbase regionserver向zookeeper注册,提供hbase regionserver状态信息

https://zhuanlan.zhihu.com/p/413300832

  • Zookeeper 提供了 Hbase Master 的高可用实现,并保证同一时刻有且仅有一个主 Master 可用。

  • Zookeeper 保存了 Region 和 Region Server 的关联信息(提供寻址入口),并保存了集群的元数据(Schema/Table)。

  • Zookeeper 实时监控Region server的上线和下线信息,并实时通知Master。

3. HMaster

1.监控 RegionServer,处理 RegionServer 故障转移

2.管理用户对table的增删改 *** 作即DDL(data definition language)(create, delete, alter)

3.处理 region 的分配或转移到各个RegionServer

4.在空闲时间进行数据的负载均衡

5.通过 Zookeeper 发布自己的位置给客户端

4. RegionServer

1.负责存储 Hbase 的实际数据,存放和管理本地HRegion,并负责切分正在运行过程中变的过大的region

2.刷新缓存到 HDFS

3.维护 Hlog

4.执行压缩

5.负责处理 Region 分片

5. Hlog

HLog(WAL log):预写入日志,记录 *** 作,类似于hdfs的edits
WAL意为write ahead log,用来做数据恢复使用,HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复

1.Write-Ahead logs
Hbase 的修改记录,当对 Hbase 读写数据的时候,数据不是直接写进磁盘,它会在内
存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有
更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead 
logfile 的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个
日志文件重建。
2. HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是
HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,
同时还包括 sequence number和timestamp,timestamp是”写入时间”,sequence 
number的起始值为0,或者是最近一次存入文件系统中sequence number。
HLog SequeceFile的Value是Hbase的KeyValue对象,即对应HFile中的KeyValue。
6. Region

Hbase 表的分片,Hbase 表会根据 RowKey值被切分成不同的 region 存储在 RegionServer中,在一个 RegionServer 中可以有多个不同的 region。

# 每个regionServer大约100个regions的时候效果最佳:
1)hbase的一个特性MSLAB,它有助于防止堆内存的碎片化,减轻垃圾回收full gc
的问题,默认是开启的。但是每个MenStore需要2MB,如果region过多,就算不储存数据,也会占用很多内存。
2)如果region过多,MenStore也过多,就会触发regionServer的限制,导致flush,就会对用户请求产生较大的影响,可能阻塞该regionServer上的更新 *** 作。
3)HMaster需要花费大量的时间来分配和移动Region,且过多的region会增加zookeeper的负担。
4)hbase读入数据进行处理的mapreduce程序,过多的region会产生很多的map任务数量,默认情况下有设计的region数量决定。

# region大小的影响:
hbase中的数据一开始会写入MemStore,超过配置之后,会flush到磁盘成为HStore文件,
当HStore的数量超过配置之后,会启动compaction,将他们合并为一个HStore。
当合并后的HStore大于max.filesize时,会触发风格动作,将它切分为两个
region。hbase.hregion.max.filesize不宜过大或过小,经过实战,生产高并
发运行下,最佳大小5-10GB!关闭某些重要场景的hbase表的major_compact!在
非高峰期的时候再去调用major_compact,这样可以减少split的同时,显著提供集群的性能,吞吐量、非常有用。
1)当hbase.hregion.max.filesize比较小时,触发split的机率更大,系统的整体访问服务会出现不稳定现象。
2当hbase.hregion.max.filesize比较大时,由于长期得不到split,因此同一
个region内发生多次compaction的机会增加了。这样会降低系统的性能、稳定性,因此平均吞吐量会受到一些影响而下降。
7. Store

每一个region由一个或多个store组成,至少是一个store

HFile 存储在 Store 中,一个 Store 对应 Hbase 表中的一个列族。

8. MemStore

内存存储,位于内存中,用来保存当前的数据 *** 作,所以当数据保存在WAL 中之后,RegsionServer 会在内存中存储键值对。

数据先存储在 MemStore 中,排好序后,当memStore的大小达到一个阈值(默认128MB)时,memStore会被flush到文 件(HFile),每次刷写都会形成一个新的 HFile。

9. StoreFile

memStore内存中的数据写到文件后就是StoreFile,这里是一种概念上的叫法。StoreFile底层是以HFile的格式保存,即数据保存在hdfs上

10. HFile

这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5635325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存