没有合适的资源?快使用搜索试试~ 我知道了~
首页HBase学习笔记(个人整理)
资源详情
资源评论
资源推荐
1
一 快速入门
基本概念
、什么是
全称 是一个分布式可扩展版本化面向列的 语言实现
的开源 数据库构建于
和
之上。
是参考谷歌的 的论文开发实现的生态系统引入了
的大部分功能。
生态圈
、 的特点
海量存储 单表可以有百亿行百万列相对于传统关系型数据库 !"#而
言存储能力非常强悍。
列式存储创建表时无需指定具体的列根据数据的插入动态插入$可以针对列进行权
限控制和读取。
2
多版本可以为数据添加版本信息如用户信息的 变更历史。
稀疏性为空的列不占用实际存储空间。
高扩展、高可用性底层基于 % 高可用和扩展性得到的了保障。
线性和模块化的可扩展性。
严格一致的读写操作: HBase 不是“最终一致”的 DataStore。这使得它非常适合高速计数器聚
合等任务;
表的自动和可配置分片: HBase 表通过 Region 分布在群集上,并且随着数据的增长,Region
会自动分割和重新分配;
支持 RegionServers 之间的自动故障转移。
Hadoop / HDFS 集成:HBase 支持 HDFS 作为其分布式文件系统;
MapReduce:HBase 支持通过 MapReduce 进行大规模并行处理,将 HBase 用作源和接收
器。
易于使用的 Java API,用于客户端访问。
阻止缓存和 Bloom 过滤器以进行实时查询。
查询谓词通过服务器端过滤器下推
Thrift / REST-ful API,支持 XML,Protobuf 和二进制数据编码选项
可扩展的基于 jruby(JIRB)的外壳
块缓存和布隆过滤器:HBase 支持块缓存和布隆过滤器,以实现高容量查询优化;
支持通过 Hadoop 指标子系统将指标导出到文件或 Ganglia;*或通过 JMX;
运营管理: 提供内置网页,用于运营洞察和 & 指标。
、列式存储和行式存储
由上图可以看出
行式存储数据库中表结构是固定的每行的每一列都站位无论有无数据。读取数据
时需要将所有列的数据读取到内存中进行处理再返回结果。
列式存储数据库中列的机构是不固定的如果行的数据某一列没有数据那么将不占用
空间。读取数据时可以直接定位到所需要的列进行返回数据。
3
行式、列式存储底层结构的区别
从上图可以看到,在行式存储下,一张表的数据都是放在一起的,但列式存储下都被分开保存
了。
、 中表结构模型
表#用于存储管理数据具有稀疏的、面向列的特点。 中的每一张表就
是所谓的大表#。
行键'(#类似于 !" 中的主键 根据行键来快速检索数据一个行键
对应一条记录。与 !" 主键不同的是 的行键是天然固有的每一行数据都
存在行键。
列簇)*+,%+#是列的集合。列族在表定义时需要指定而列在插入数据时动
态指定。列中的数据都是以二进制形式存在没有数据类型。在物理存储结构上每个
表中的每个列族单独以一个文件存储参见图 -./#。一个表可以有多个列族。
时间戳+ +#是列的一个属性是一个 01 位整数。由行键和列确定的单元
格可以存储多个数据每个数据含有时间戳属性数据具有版本特性。可根据版本
2' 345 #或时间戳来指定查询历史版本数据如果都不指定则默认返回最新版本
4
的数据。
举例将传统表转成 的存储
转换后的结果行中有行,列中有列#
其中
将原有数据列拆分成 / 个列族分别是 *6,7 和 ,6,7
-88- 用户有三个版本数据从数据上可以看出该用户设置了 9 个地址.
与列簇的创建
存储时数据按照 '(: 的字典序#排序存储。设计 : 时要充分
排序存储这个特性将经常一起读取的行存储放到一起。位置相关性#
一个列族在数据底层是一个文件所以将经常一起查询的列放到一个列族中列族尽量少减
少文件的寻址时间。
因为 是列式数据库列非表 + 的一部分所以在设计初期只需要考虑
(: 和 *+,%+ 即可(: 有位置相关性所以如果数据是练习查询的最
好对同类数据加一个前缀而每个 *+,%+ 实际上在底层是一个文件那么文件越
小查询越快所以将经常一起查询的列设计到一个列簇但是列簇不宜过多。
Rowkey 长度原则
'(: 是一个二进制码流'(: 的长度被很多开发者建议说设计在 -8;-88 个字
节不过建议是越短越好不要超过 -0 个字节。
原因如下
(-)数据的持久化文件 % 中是按照 * 存储的如果 '(: 过长比如 -88
个字节-888 万列数据光 '(: 就要占用 -88<-888 万=-8 亿个字节将近 -> 数据
这会极大影响 % 的存储效率;
5
(/)+ 将缓存部分数据到内存如果 '(: 字段过长内存的有效利用率会降
低系统将无法缓存更多的数据这会降低检索效率。因此 '(: 的字节长度越短越好。
(9)目前操作系统是都是 01 位系统内存 ? 字节对齐。控制在 -0 个字节? 字节的整数
倍利用操作系统的最佳特性。
Rowkey 散列原则:
如果 '(: 是按时间戳的方式递增不要将时间放在二进制码的前面建议将 '(:
的高位作为散列字段由程序循环生成低位放时间字段这样将提高数据均衡分布在每个
', 实现负载均衡的几率。如果没有散列字段首字段直接是时间信息将产生
所有新数据都在一个 ', 上堆积的热点现象这样在做数据检索的时候负载将
会集中在个别 ', 降低查询效率。
Rowkey 唯一原则:
必须在设计上保证其唯一性。
的瓶颈
HBase 的瓶颈就是硬盘传输速度。 的操作它可以往数据里面 ,也可以
* 一些数据但 * 的实际上也是 ,只是插入一个新的时间戳的一
行。 数据也是 ,只是 , 一行带有 标记的一行。Hbase 的所有
操作都是追加插入操作。 是一种日志集数据库。它的存储方式像是日志文件一
样。它是批量大量的往硬盘中写通常都是以文件形式的读写。这个读写速度就取决于硬
盘与机器之间的传输有多快。而 4 的瓶颈是硬盘寻道时间。它经常的操作是随机读
写。要 * 一个数据先要在硬盘中找到这个 :然后把它读入内存在内存中的缓
存中修改过段时间再回写回去。由于你寻找的 : 不同这就存在一个随机的读。硬盘
的寻道时间主要由转速来决定的。而寻道时间技术基本没有改变这就形成了寻道时间瓶
颈。
内部机制
在 、', 内部创建了 ' 实例并与 ), 三者之间实现了
' 调用8.@A 内部引入了 >BC*7 作为中间数据组织方式并在
C*7 提供的 ' 接口之上实现了基于服务的 ' 实现本文详细阐述了 B
' 实现细节。
的 协议
在 、', 内部实现了 多个 来完成管理和应用逻辑具
体 如下
HMaster 支持的 Rpc 协议:
,C), 与 之间的通信 是 ' 端主要
实现 集群监控的目的。
+,C), 与 之间的通信 是 ' 端主要实
现 表格的管理。例如 + 的更改B', 的迁移、合并、下线
4D,#、上线4,,#以及负载平衡以及 的删除、快照等相关功能。
剩余63页未读,继续阅读
Thomson617
- 粉丝: 436
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0