1.HBase与Hadoop的关系
HDFS
- 为分布式存储提供文件系统
- 针对存储大尺寸的文件进行优化,不适用对HDFS上的文件进行随机读写
- 直接使用文件
- 数据模型不灵活
- 使用文件系统和处理框架
- 优化一次写入,多次读取的方式
HBase
- 提供表状的面向列的数据存储
- 针对表状数据的随机读写进行优化
- 使用key-value操作数据
- 提供灵活的数据模型
- 使用表状存储,支持MapReduce,依赖HDFS
- 优化了多次读,以及多次写
2.RDBMS与HBase的对比
关系型数据库
- 结构:
- 数据库以表的形式存在
- 支持FAT、NTFS、EXT、文件系统
- 使用Commit log存储日志
- 参考系统是坐标系统
- 使用主键(PK)
- 支持分区
- 使用行、列、单元格
- 功能:
- 支持向上扩展
- 使用SQL查询
- 面向行,即每一行都是一个连续单元
- 数据总量依赖于服务器配置
- 具有ACID支持
- 适合结构化数据
- 传统关系型数据库一般都是中心化的
- 支持事务
- 支持Join
HBase
- 结构:
- 数据库以region的形式存在
- 支持HDFS文件系统
- 使用WAL(Write-Ahead Logs)存储日志
- 参考系统是Zookeeper
- 使用行键(row key)
- 支持分片
- 使用行、列、列族和单元格
- 功能:
- 支持向外扩展
- 使用API和MapReduce来访问HBase表数据
- 面向列,即每一列都是一个连续的单元
- 数据总量不依赖具体某台机器,而取决于机器数量
- HBase不支持ACID(Atomicity、Consistency、Isolation、Durability原子性、一致性、隔离性、耐久性)
- 适合结构化数据和非结构化数据
- 一般都是分布式的
- HBase不支持事务
- 不支持SQL
- 不支持Join