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

HBase体系结构的更多相关文章

  1. hadoop学习笔记(六):HBase体系结构和数据模型

    1. HBase体系结构 一个完整分布式的HBase的组成示意图如下,后面我们再详细谈其工作原理. 1)Client 包含访问HBase的接口并维护cache来加快对HBase的访问. 2)Zooke ...

  2. HBase体系结构(转)

    HBase的服务器体系结构遵循简单的主从服务器架构,它由HRegion服务器(HRegion Server)群和HBase Master服务器(HBase Master Server)构成.HBase ...

  3. HBase体系结构剖析

    本文出自:http://wuyudong.com/archives/154 在上篇文章<HBase简介>中,已经提到过,HBase中的Table中的所有行都按照row key的字典序排列, ...

  4. hbase体系结构以及说明

    HMaster:数据库总控节点 HRegionServer:通常是一个物理节点即一台单独的计算机,一个HRegionServer包含多个HRegion,假如一个表有一亿行数据,那么可能会分散在一个Re ...

  5. HBase(七): HBase体系结构剖析(下)

    目录: write Compaction splite read Write: 当客户端发起一个Put请求时,首先根据RowKey寻址,从hbase:meta表中查出该Put数据最终需要去的HRegi ...

  6. HBase(六): HBase体系结构剖析(上)

    HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...

  7. Hbase入门教程--单节点伪分布式模式的安装与使用

    Hbase入门简介 HBase是一个分布式的.面向列的开源数据库,该技术来源于 FayChang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像 ...

  8. HBase介绍及简易安装(转)

    HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...

  9. HBase(八): 表结构设计优化

    在 HBase(六): HBase体系结构剖析(上) 介绍过,Hbase创建表时,只需指定表名和至少一个列族,基于HBase表结构的设计优化主要是基于列族级别的属性配置,如下图: 目录: BLOOMF ...

随机推荐

  1. 安装xampp 后 发现 apache 启动不起来

    这种事情很常见的.启动不起来 第一,改个端口

  2. 利用OVER开窗函数分页

    在SQL Server中,利用SQL进行分页的方法也有很多,今天要总结的是SQL Server 2005中引入的OVER开窗口函数,然后利用开窗函数进行分页. 示例代码如下: -- 设置数据库上下文 ...

  3. JavaScript整合

    JavaScript已经学完了,总体感觉良好,但是突然发现原来JS可以做的东西比我想象的还要多!我整理了一些JavaScript的基础知识,这些内容掌握好的话,对我们深入学习JavaScript会有很 ...

  4. Spark Streaming之旅

    1. 打开spark-shell 2. 建立StreamingContext import org.apache.spark.streaming._ import org.apache.spark.s ...

  5. jetty启动不能保存

    主要原因是jetty缓存的静态页面不能被修改.只需要在web.xml文件中配置如下: <servlet>    <!-- Override init parameter to avo ...

  6. 学习Nim语言.rar(nim语言中文教程下载)

    学习Nim语言 nim 语法上类似python ,是一门静态编译型语言,nim 使用空格缩进标示语句块的开始和结束, 喜欢python风格的程序员应该也会很容易适应和喜欢nim的风格. nim语言官方 ...

  7. WAMP环境启动失败处理办法

    点击控制面板->系统与安全->管理工具->查看事件日志->windows日志->应用程序 查看错误日志,查找错误并解决

  8. Spark源码学习1.1——DAGScheduler.scala

    本文以Spark1.1.0版本为基础. 经过前一段时间的学习,基本上能够对Spark的工作流程有一个了解,但是具体的细节还是需要阅读源码,而且后续的科研过程中也肯定要修改源码的,所以最近开始Spark ...

  9. UIMenuController的使用,对UILabel拷贝以及定制菜单

    分类: ios开发2012-08-06 17:15 11961人阅读 评论(0) 收藏 举报 actionmenuuiview 1. Menu所处的View必须实现 – (BOOL)canBecome ...

  10. Spring 核心概念以及入门教程

    初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...