博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HBase体系结构
阅读量:7208 次
发布时间:2019-06-29

本文共 1561 字,大约阅读时间需要 5 分钟。

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 实战》

转载地址:http://xopum.baihongyu.com/

你可能感兴趣的文章
正确配置Linux系统ulimit值的方法【转】
查看>>
JavaScript停止冒泡和阻止浏览器默认行为
查看>>
利用epoll写一个"迷你"的网络事件库
查看>>
[Ramda] Compose and Curry
查看>>
Java排序算法——希尔排序
查看>>
在虚拟机中安装Ubuntu Server 15.04
查看>>
网易2017校招编程:计算糖果
查看>>
mysql-cluster集群原理介绍和搭建步骤(四个data/sql节点) (转)
查看>>
[Angular 2] Create template with Params
查看>>
5分钟教你Windows 10中将“运行”固定到开始菜单
查看>>
聊聊在博客园写博客的这两年&&《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
查看>>
Spark参数配置
查看>>
redis中密码设置
查看>>
代码建模
查看>>
我的这10年——从机械绘图 到 炼油 到 微软MVP 的华丽转身
查看>>
hdu1698 Just a Hook (线段树区间更新 懒惰标记)
查看>>
【Linux】查询文件中指定字符串的记录
查看>>
Spring Batch事务处理
查看>>
tomcat重启后session没有清除的解决办法
查看>>
深入剖析SolrCloud(一)
查看>>