相对于rdbms
![](https://img.haomeiwen.com/i2562426/f6cdbfd9c4488094.png)
hbase vs rdbms
- 数据类型
HBase
只有简单的字符串类型 - 数据操作
HBase
只有简单的增、删、改、查等操作,没有表之间的关联 - 存储模式
HBase
基于列存储的,每个列族由几个文件保存 - 数据维护
HBase
不是真正意义上的更新数据 - 可伸缩性
- 应用场景
Hbase
适合大量插入同时又有读的情况
HBase
很适合寻找按照时间排序top n
的场景 -
HBase
的瓶颈是硬盘传输速度,RDBMS
的瓶颈是硬盘寻道时间 - 索引不同造成行为的差异
传统数据库的行式存储
- 数据存放在数据文件内
- 数据文件的基本组成单位:块/页
- 块内结构:块头、数据区
行式存储的问题
- 读某个列必须读入整行
- 行不等长,修改数据可能导致行迁移
- 行数据较多时可能导致行链
行标识访问:B树索引
![](https://img.haomeiwen.com/i2562426/f8a06822ac2e5c4a.png)
B
树索引的缺点
空间代价,创建时间代价,维护代价
重复值多时影响效率
![](https://img.haomeiwen.com/i2562426/3eb38729b1f6e758.png)
hbase和mapreduce
-
hbase
集成了mapreduce
框架,对表中大量数据进行并行处理 -
hbase
为mapreduce
每个阶段提供了相应的类用来处理表数据 -
InputFormat
类-
hbase
实现了TableInputFormatBase
类,该类提供了对表数据的大部分操作,其子类TableInputFormat
则提供了完整的实现,用于处理表数据并声称键值对
-
-
Mapper
类和Reducer
类-
hbase
实现了TableMapper
类和TableReducer
类
-
-
OutputFormat
类-
hbase
实现的TableOutputFormat
将输出的<key,value>
对写到指定的hbase
表中
-
网友评论