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. h5拖放-基础知识

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. Adroid_Spinner_ArrayAdapter

    XML布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...

  3. LINUX-----管道流及重定向

    1.管道流 在linux中  | 符号代表管道流 用法:command1 | command2 第一个命令的标准输出将作为第二个命令的标准输入 例:cat a.txt | grep "abc ...

  4. 介绍一些适用于 Web 开发者的 Atom 编辑器插件

    Atom 的社区很繁荣,有着丰富的扩展/插件(packages).安装 Atom 的 Package 非常简单,可以在编辑器的偏好设置里面安装,也可以在命令行中使用 apm 命令来安装. 在介绍适用于 ...

  5. /lib /usr/lib /usr/local/lib 的区别

    /lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的. /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件.目录 /usr/lib/ 中含 ...

  6. 关于Struts2中的值栈与OGNL表达式

    1.1.1    OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL     :OGNL比EL功能强大很多倍. 它是一个开源项目. ...

  7. hihocoder 1186

    1186 : Coordinates 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Give you two integers P and Q. Let all div ...

  8. 修改Atom 隐藏.gitignore忽略的文件/文件夹的配置

    参考链接:.gitignored files are hidden from tree view regardless of setting 假如Atom打开的文件夹有.gitignore 文件,会隐 ...

  9. Sqlserver 理解子查询

    理解子查询: 理解子查询: 多表连接查询往往也可以用子查询进行替代 子查询本质是嵌套进其他 select update insert Delete 语句的一个被限制的select语句,在子查询中,只有 ...

  10. Java Thread interrupt

    现有线程对象threadA,调用threadA.interrupt(),则threadA中interrupted状态会被置成false,很多线程中都是通过isInterrupted()方法来检测线程是 ...