1)、逻辑模型

Hbase 以表的形式存储数据,每个表由行和列组成,每个列属于一个特定的列族。

表中由行和列确定的存储单元称为一个元素,每个元素保存了同一份数据的多个版本,由时间戳来标识。行健是数据行在表中的唯一标识,并作为检索记录的主键。行健可以是任意字符串(最长64KB),并按照字典序进行存储。

访问表中行的三种方式:(1)通过单个行健访问(2)给定行健的范围访问(3)全表扫描

列的定义:<列族>:<限定符>,Hbase在磁盘上按照列族存储数据

元素由行健(<列族>:<限定符>)和时间戳唯一确定,元素中的数据以字节码的形式存储,没有类型之分。

2)物理模型

Hbase是按照列存储的稀疏行/列矩阵,物理模型实际上就是把概念模型中的一个行进行分割,并按照列族进行存储,表中的空值不被存储

3)Region服务器

Hbase在行的方向上将表分成了多个Region,每个Region包含了一定范围内(根据行健进行划分)的数据。每个表最初只有一个Region,随着表中记录数的不断增加超过某个阈值时形成新的Region。

Region是Hbase中分布式存储和负载均衡的最小单位,即一个表的所有Region会分布在不同的Region服务器上,但一个Region内的数据只会存储在一个服务器上。

物理上所有数据都存储在HDFS上,并由Region服务器提供数据服务,通常一台计算机只运行一个Region服务器程序(HRegionServer),每个HRegionServer管理多个Region实例(HRegion),其中HLog是用来做灾难备份的,使用的是预写式日志。

每个Region服务器只维护一个HLog,所有来自不同表的Region日志是混合在一起的,这样做的目的是不断追加单个文件,可以减少磁盘寻址次数,提高对表的写性能。但不易恢复。

每个Region有一个或多个Store组成,每个Store保存一个列族的所有数据。每个Store又是由一个memStore和零个或多个StoreFile组成,StoreFile则是以HFile的格式存储在HDFS上的。

当客户端进行更新操作时,先连接有关的HRegionServer,然后向Region提交变更。提交的数据互首先写入WAL和MemStore中,当MemStore中数据累积到某个阈值时,HRegionServer就会启动一个单独的线程将MemStore中的内容刷新到磁盘,形成一个StoreFile.

当StoreFile文件的数量增长到一定阈值后,就会将多个StoreFile合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出Hbase只有增加数据,所有的更新和删除操作都是在后续的合并中进行的。StoreFile在合并过程中会逐步形成更大的StoreFile,当单个StoreFile大小超过一定阈值后,会把当前的Region分割成两个Region,并由HMaster分配到相应的Region服务器上,实现负载均衡。

4)主服务器

HMaster将Region分配给Region服务器,协调Region服务器的负载并维护集群的状态。HMaster不会对外提供数据服务,而是由Region服务器负责所有Region的读写请求和操作。如果HRegionServer发生故障终止,Hmaster会通过ZooKeeper感知到并处理相应的Log文件,然后将失效的Region进行重新分配。此外,HMaster还负责管理表的schema和对元数据的操作。

因HMaster值维护表和Region的元数据而不参与数据的输入输出,HMaster失效仅会导致所有的元数据无法被修改,但表的数据读写还是可以正常进行的。

5)元数据表

用户表的Region元数据存储在.META.表中,随着Region增加,.META.表中数据也会增加,并分裂成多个Region。

为了定位.META.表中各个Region的位置,把.META.表中所有Region的元数据保存在-ROOT-表中,最后有ZooKeeper记录-ROOT-表的位置信息

客户端访问用户数据前先访问ZooKeeper获得-ROOT-的位置,然后访问-ROOT-表获得.META.表的位置,最后根据.META.表中的信息确定用户数据的存放位置

-ROOT-表永远不会被分割,它只有一个Region。.META.表的Region全部保存在内存中

4、Hbase的更多相关文章

  1. 大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark

    Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datano ...

  2. hadoop、hbase、hive、zookeeper版本对应关系

    本文引用自:http://www.aboutyun.com/blog-61-62.html 最新版本: hadoop和hbase版本对应关系: Hbase    Hadoop 0.92.0 1.0.0 ...

  3. Zookeeper、HBase的伪分布

    1.Zookeeper伪分布的部署(3个节点) 所谓的“伪分布式集群”就是在一台服务器中,启动多个Zookeeper实例.“完全分布式集群”是每台服务器,启动一个Zookeeper实例. 1.1.解压 ...

  4. HBase 1、HBase介绍和工作原理

    HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...

  5. 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)

    离线数据分析平台是一种利用hadoop集群开发工具的一种方式,主要作用是帮助公司对网站的应用有一个比较好的了解.尤其是在电商.旅游.银行.证券.游戏等领域有非常广泛,因为这些领域对数据和用户的特性把握 ...

  6. 一、Hbase的安装

    一.Hbase配置 这个是我从网上找的一个版本,网上说配置成功. 先决条件: (1)hadoop的版本与hbase的版本要对应,主要是hadoop目录下的hadoop-core-1.0.4.jar的版 ...

  7. 四、Hbase

    一.什么情况下使用Hbase 例子: 这里Order By无时不刻的处理,我们要看到刚才的足迹,不能使用缓存技巧. 根据时间戳来查询,显然很快,应为Hbase就是以时间戳来存的. 将最近的数据放在内存 ...

  8. [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件

     云计算之hadoop.hive.hue.oozie.sqoop.hbase.zookeeper环境搭建及配置文件已经托管到githubhttps://github.com/sxyx2008/clou ...

  9. Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)

    阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...

  10. MongoDB、Hbase、Redis等NoSQL优劣势、应用场景

    NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻.在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数 ...

随机推荐

  1. 从你的u盘启动:30天自制操作系统第四天u盘启动学习笔记

    暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 developing environment:ubuntu 关于u盘启动自己做的操 ...

  2. extremeComponents(ec)源码分析

    eXtremeComponents(简称ec)是一系列提供高级显示的开源JSP定制标签,当前的包含的组件为eXtremeTable,用于以表形式显示数据. 其本质是jsp的自定义标签,抓住这一点就抓住 ...

  3. EasyMock 使用方法与原理剖析--转载

    原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一 ...

  4. spring Transaction Management --官方

    原文链接:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html 12.  ...

  5. 根据字符串计算UILabel尺寸

    iOS开发中经常会遇到UILabel大小尺寸不固定的情况,需要根据文字内容变化,这时候就需要计算文字大小以自动改变UILabel的尺寸. iOS7之后计算尺寸只需要一个方法就可以: - (CGSize ...

  6. centos nginx和tomcat 通过反向代理生成想要的nexus网址

    研究背景: 最近一直在研究maven nexus 私服,所以想在自己带老笔记本上搭建一个私服,看到网上很多私服都有自己带域名,所以想在搭建过程中通过修改host 生成想要带域名 成功截图: 操作步骤: ...

  7. IOS中如何显示带有html标签的富文本

    NSString *strHTML = @"<p>你好</p><p>        这是一个例子,请显示</p><p>外加一个ta ...

  8. Div+Css的初步运用

    采用DIV+CSS模式的网站具有以下优势:1.表现和内容相分离 2.代码简洁,提高页面浏览速度 3.易于维护和改版 4.提高搜索引擎对网页的索引效率. 然后呢html文件中放置CSS有三种类型:内联. ...

  9. PHP之curl

    当我第一次接触curl的时候,看文档,以及网上search各种资料,官方(http://cn2.php.net/manual/en/intro.curl.php)的解释是,这是某大牛写的一个libcu ...

  10. 月下载量上千次的APP源码分享

    在360上面上线了一个月,下载量上千余次.这里把代码都分享出来,供大家学习哈!还包括教大家如何接入广告,赚点小钱花花,喜欢的帮忙顶一个,大神见了勿喷,小学僧刚学Android没多久. 首先介绍这款应用 ...