4、Hbase
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的更多相关文章
- 大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark
Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datano ...
- hadoop、hbase、hive、zookeeper版本对应关系
本文引用自:http://www.aboutyun.com/blog-61-62.html 最新版本: hadoop和hbase版本对应关系: Hbase Hadoop 0.92.0 1.0.0 ...
- Zookeeper、HBase的伪分布
1.Zookeeper伪分布的部署(3个节点) 所谓的“伪分布式集群”就是在一台服务器中,启动多个Zookeeper实例.“完全分布式集群”是每台服务器,启动一个Zookeeper实例. 1.1.解压 ...
- HBase 1、HBase介绍和工作原理
HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...
- 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)
离线数据分析平台是一种利用hadoop集群开发工具的一种方式,主要作用是帮助公司对网站的应用有一个比较好的了解.尤其是在电商.旅游.银行.证券.游戏等领域有非常广泛,因为这些领域对数据和用户的特性把握 ...
- 一、Hbase的安装
一.Hbase配置 这个是我从网上找的一个版本,网上说配置成功. 先决条件: (1)hadoop的版本与hbase的版本要对应,主要是hadoop目录下的hadoop-core-1.0.4.jar的版 ...
- 四、Hbase
一.什么情况下使用Hbase 例子: 这里Order By无时不刻的处理,我们要看到刚才的足迹,不能使用缓存技巧. 根据时间戳来查询,显然很快,应为Hbase就是以时间戳来存的. 将最近的数据放在内存 ...
- [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件
云计算之hadoop.hive.hue.oozie.sqoop.hbase.zookeeper环境搭建及配置文件已经托管到githubhttps://github.com/sxyx2008/clou ...
- 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 ...
- MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻.在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数 ...
随机推荐
- TCP/IP协议原理与应用笔记12:单播、多播和广播地址(目的地址)
根据数据接收者的接收范围,将目的地址分为单播.多播.广播. 这里目的地址的划分主要针对的是 物理地址 和 IP地址,没有涉及到端口地址,因为主要针对标识通信节点的地址(物理地址 和 IP地址)而言,和 ...
- JS实现字符串去重,数组去重
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux中shell编程
shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...
- PHP代码安全学习笔记V1.0
PHP代码安全学习笔记V1.0http://www.docin.com/p-778369487.html
- Android 自学之进度条ProgressBar
进度条(ProgressBar)也是UI界面中的一种非常使用的组件,通常用于向用户显示某个耗时完成的百分比.因此进度条可以动态的显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应, ...
- setTimeout和setImmediate以及process.nextTick的区别
在javascript中我们了解到了setTimeout和setInterVal函数事件队列(任务队列)的相关知识,除了setTimeout和setInterval这两个方法外,Node.js还提供了 ...
- [转]Oracle开发专题之:%TYPE 和 %ROWTYPE
本文转自:http://www.cnblogs.com/kingjiong/archive/2009/02/19/1393837.html 1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来 ...
- 聊一聊 AngularJS 服务
什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用. AngularJS 内建了30 多个服务. 为什么使用服务? 在很多服务中,比如 $loca ...
- C# 3.0 LINQ to XML
高级转换: static IEnumerable<XElement> ExpandPaths (IEnumerable<string> paths) { var brokenU ...
- MBR与分区表备份与恢复
常用工具列表 dd 数据复制,转换实用工具 tar GNU磁盘存档实用工具 cpio 数据存档实用工 ...