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