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

news/2024/5/20 4:51:46 标签: hadoop, hbase, hdfs, 大数据

文章目录

    • 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的时候效果最佳:
1hbase的一个特性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的机率更大,系统的整体访问服务会出现不稳定现象。
2hbase.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.niftyadmin.cn/n/1178427.html

相关文章

ArcGIS Server开发教程系列(7)使用ArcGIS API for Javascript-Hello World

ArcGIS API for Javascript API下载地址:http://support.esrichina-bj.cn/2011/0223/960.html 选择最新的下载就好了,目前是3.9 VS2010 C# 新建项目-ASP.NET Web应用程序即可。 API解压后把C:\inetpub\wwwroot\arcgis_js_v39_api复制到C:\inetpub\wwwro…

thinkphp 公用函数

thinkphp 的项目中指定了common/function.php的函数是公用函数。 不但php页面可以使用,模板文件也可以使用: ztrs3是没有在任何地方提前声明的。直接写在模板文件即可。转载于:https://www.cnblogs.com/lvchenfeng/p/5235346.html

大物实验计算弹性模量_大学物理实验报告(清华大学)拉伸法测弹性模量.doc...

物理实验报告系别 机械系 班号 机53 姓名 丁旭阳 (同组姓名 )做实验日期 2006 年 10 月 19 日 教师评定2.1 拉伸法测弹性模量一、实验目的1、学习用拉伸法测弹性模量的方法。2、掌握螺旋测微计和读数显微镜的使用。3、学习用逐差法处理数据。二、实验仪器支架、读数显微镜、底座…

各种查找算法效率比较

一、需求分析 1.问题描述: 给定一个已经排好序的N个整数的序列(数据从1到N),在该序列中查找指定的整数,并观察不同算法的运行时间。考查3类查找算法:折半查找,平衡二叉排序树的查找,…

java实现单链表

文章目录1. 定义结点类2. 定义SingleLinkedList类 实现链表操作3. 测试单链表1. 定义结点类 //定义HeroNode,每个HeroNode对象就是一个结点 class HeroNode{public int no;public String name;public String nickname;public HeroNode next; // 指向下一个结点pub…

*双向循环链表

双向循环链表(带头结点)的创建,一共五步,如图所示: p->next q; q->priorp; q->nexthead; head->prior q; pq; 插入结点操作: s->priorp->prior; p->prior->nexts; s->nextp; p-…

两千万像素分辨率是多少_2000多万像素的相机画质怎么样?够用吗?

相机成像质量的好坏,分辨率是多少像素只是其中一个方面,起到主要作用的还是要看感光元件的尺寸、技术,当下主流2000多万像素的分辨率完全够用。 拍摄一张照片,并不是分辨率越高就越"清楚"。如果在电脑显示器上看照片,或冲洗成6寸之类的纸质照片,分辨率在千万像…

《天空账本》团队计划

一、任务设定会议过程 时间:4月13日3.00-4.00 内容:确定了软件的实现形式为安卓移动端开发,软件初步实现的功能以及实现过程中的任务,并且每人认领了各自的任务。 二、backlog ID  NameImpEstHow to DemoNotes1登陆及注册 打开软件&#x…