专栏首页个人分享HBase体系结构

HBase体系结构

HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion服务器(HRegion Service)群和HBase Master服务器(HBase Master Server)构成。Hbase Master服务器负责管理所有的HRegion服务器,而Hbase中所有的服务器是通过Zookeeper来进行协调,并处理HBase服务器运行期间可能遇到的错误的。

1、HRegion

当表的大小超过设置的值时,HBase会自动地将表划分为不同的区域,每个区域包含所有行的子集。从物理上讲,一张表被拆分成了多块,每一块儿就是一个HRegion.一个HRegion会保存一表里面某段连续的数据,从开始主键到结束主键,一张完整的表格是保存在多个HRegion上面。

2、HRegion服务器

  所有的数据一般都是保存在HDFS中,用户通过一系列HRegion服务器获取这些数据,一台机器上一般只运行一个HRegion服务器,且每一个区段的HRegion也只会被一个HRegion维护。

  当用户需要更新数据的时候,他会被分配到对应的HRegion服务器上提交修改,这些修改先是被写到Hmemcache缓存和服务器的Hlog文件里面(Hmemcache是内存中的缓存,保存最新更新的数据数据:HLOG是磁盘上面的记录文件,它记录着所有的更新操作),在操作写入Hlog之后,commit()调用才会将其返回给客户端。

读取数据时,HRegion服务器会先访问Hmemcache缓存,如果缓存中没有该数据,才会回到Hstores磁盘上面寻找,每个列族都会有一个Hstore集合,每个Hstore集合包含很多具体的HstoreFile文件,这些文件都是B树结构,方便快速读取。

  启动时,每台HRegion服务器会检查自己的Hlog文件,看看最近一次执行flushcache之后有没有新的更新写入操作。如果没有,表示数据都已经更新到文件中了,如果有更新,服务器会把这些更新写高速缓存,然后调用flushcache写入到文件中。最后服务器会删除旧的Hlog文件,并开始让用户访问数据。

3、HBase Master服务器

  每台HRegion服务器都会和HMaster服务器通信,HMaster的主要任务就是告诉每台HRegion服务器它要维护哪些HRegion.当一台新的HRegion服务器登录到HMaster服务器时,HMaster会告诉它先等待分配数据。而当一台HRegion死机时,HMaster会把它负责的HRegion标记为未分配,然后再把它分配到其他HRegion服务器中。

4、ROOT表和META表

因为Hbase有合并和分割操作,如果正好在执行这些操作的过程中出现死机,那么就可能存在相同的 表名和开始主键,每个HRegion都有一个 regionId 来标识它的唯一性。所以一个HRegion的表达符最后是:表名+开始主键+唯一ID(tablename + startkey + regionId)。用这个识别符来区分不同的HRegion,这些数据就是元数据(META),而元数据本身也是被保存在HRegion里面的,所以我们称这个表为源数据表(META Table),里面保存的就是HRegion标识符和实际HRegion服务器的映射关系。

  元数据表是会不断增长的,也可能被分为几个HRegion,所以采用了一个根数据表(ROOT table),它保存了所有元数据表的位置,根数据表是不会被拆分的,永远存在于一个HRegion。

HBase数据模型

  (注意的是,每一条数据对应的时间戳都是用数字来表示,编号越大表示数据越旧,反之则表示数据越新)

参考《Hadoop 实战》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM知识学习与巩固

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

    用户3003813
  • 行为统计学第二章知识总结(未完)

    如何将数据组织成某些可理解的形式,使得他可以比较容易地发现数据的趋势,并与其他人交流,这就是描述性统计的任务:简化结构并整理组织数据。整理一组数据的最常用过程是...

    用户3003813
  • Spark RDD类源码阅读

    用户3003813
  • AndFix使用感想

    AndFix已经使用了一段时间了,但是到AndFix上看了一下,最近2个月都没有更新代码了,有141个issues和3个pull request没人处理,其...

    xiangzhihong
  • nginx怎么避免惊群?

    在建立连接的时候,Nginx处于充分发挥多核CPU架构性能的考虑,使用了多个worker子进程监听相同端口的设计,这样多个子进程在accept建立新连接时会有争...

    后端技术探索
  • 图的遍历之深度优先搜索(DFS)

    深度优先搜索(depth-first search)是对先序遍历(preorder traversal)的推广。”深度优先搜索“,顾名思义就是尽可能深的搜索一个...

    llhthinker
  • 最暖数据: 除夕有6.88亿人用微信红包传递狗年祝福

    有微信红包,才叫过年。

    腾讯大讲堂
  • Python使用信息增益计算分类或决策算法中最重要的特征

    信息熵可以用来衡量事件不确定性的大小,熵越大表示不确定性越大。对于特定的随机变量,信息熵定义为每个事件的概率与概率的2-对数的乘积的相反数之和,即

    Python小屋屋主
  • 抢红包统计学(技术贴,知道为啥自己越抢越穷了吧)

    抢红包统计学(技术贴,知道为啥自己越抢越穷了吧) 一、引言 过年前微信群里面流行起来一种“红包接力”的玩法,大概的规则是:群里面先由一人发一个红包,然后大家开始...

    架构师之路
  • rancher流水线自动化部署

    准备docker环境,不会安装的参考链接 https://docs.docker.com/install/linux/docker-ce/centos/

    24-丰总

扫码关注云+社区

领取腾讯云代金券