一文读懂分布式数据库Hbase
来源:互联网 发布:js获取当前时间格转换 编辑:程序博客网 时间:2024/06/02 18:31
一、
1、什么是Hbase。
是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。
适合于存储非结构化数据,基于列的而不是基于行的模式
如图:Hadoop生态中HBase与其他部分的关系。
2、关系数据库已经流行很多年,并且Hadoop已经有了HDFS和MapReduce,为什么需要HBase?
(3)存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的
1、模型概述
HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键,列族,列限定符,时间戳]
键
值
[“201505003”,“Info”,“email”, 1174184619081]
“xie@qq.com”
[“201505003”,“Info”,“email”, 1174184620720]
“you@163.com”
4、物理视图
三、HBase实现原理
1、HBase的实现包括三个主要的功能组件:
开始只有一个Region,后来不断分裂
客户端访问数据时的“三级寻址”
为了加速寻址,客户端会缓存位置信息,同时,需要解决缓存失效问题
3、HBase的三层结构中各层次的名称和作用
层次
名称
作用
第一层
Zookeper文件
记录了-ROOT-表的位置信息
第二层
-ROOT-表
记录了.META.表的Region位置信息
-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据
第三层
.META.表
记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息
四、HBase运行机制1、HBase系统架构
用户写入数据时,被分配到相应Region服务器去执行
每次刷写都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件
(3、StroreFile的合并
触发分裂操作,1个父Region被分裂成两个子Region
Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master
1、行键(RowKey)
行键是按照字典序存储,因此,设计行键时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。
举个例子:如果最近写入HBase表中的数据是最可能被访问的,可以考虑将时间戳作为行键的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE- timestamp作为行键,这样能保证新写入的数据在读取时可以被快速命中。
InMemory:创建表的时候,可以通过HColumnDescriptor.setInMemory(true)将表放到Region服务器的缓存中,保证在读取的时候被cache命中。
Max Version:创建表的时候,可以通过HColumnDescriptor.setMaxVersions(int maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置setMaxVersions(1)。
Time To Live创建表的时候,可以通过HColumnDescriptor.setTimeToLive(inttimeToLive)设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置setTimeToLive(2* 24 * 60 * 60)。
易使用,减少编码
4、HBase只有一个针对行健的索引
访问HBase表中的行,只有三种方式:
总结:
- 一文读懂分布式数据库Hbase
- 一文读懂hadoop、hbase、hive、spark分布式系统架构
- 四十五、一文读懂hadoop、hbase、hive、spark分布式系统架构
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库HBase
- HBase--分布式数据库
- HBase分布式数据库简介
- 分布式数据库HBase简介
- 分布式数据库 HBase
- 6、 分布式数据库Hbase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 分布式数据库 HBase
- 计算机网络中的TCP/UDP协议到底是怎么回事
- MYSQL数据库字段命名及设计规范
- 如何正确关闭MongoDB
- 弹出Message
- Android-两层view叠加带来的响应问题
- 一文读懂分布式数据库Hbase
- JavaScript空中避难小游戏
- 自己实现一个ArrayList,模仿ArrayList类的底层结构
- 如何在Fragment中监听触摸事件
- EBS mo_glob_org_access_tmp表的分析
- 基于轮廓线索(Contour Cues)的实时行人检测
- 学习python的第二十一天
- JavaScript 中的 this !
- DocumentBuilderFactory解析xml