HBase 与 Hadoop 的关系
1、HDFS
* 为分布式存储提供文件系统
* 针对存储大尺寸的文件进行优化,不需要对 HDFS 上的文件进行随机读写
* 直接使用文件
* 数据模型不灵活
* 使用文件系统和处理框架
* 优化一次写入,多次读取的方式
2、HBase
* 提供表状的面向列的数据存储
* 针对表状数据的随机读写进行优化
* 使用 key-value 操作数据
* 提供灵活的数据模型
* 使用表状存储,支持 MapReduce,依赖 HDFS
* 优化了多次读,以及多次写
RDBMS 与 HBase 的对比
1、关系型数据库
结构:
* 数据库以表的形式存在
* 支持 FAT、NTFS、EXT、文件系统
* 使用 Commit log 存储日志
* 参考系统是坐标系统
* 使用主键(PK)
* 支持分区
* 使用行、列、单元格
功能:
*支持向上扩展
* 使用 SQL 查询
* 面向行,即每一行都是一个连续单元
* 数据总量依赖于服务器配置
* 具有 ACID 支持
* 适合结构化数据
* 传统关系型数据库一般都是中心化的
* 支持事务
* 支持 Join
2、HBase
结构:
* 数据库以 region 的形式存在
* 支持 HDFS 文件系统
* 使用 WAL(Write-Ahead Logs)存储日志
* 参考系统是 Zookeeper
* 使用行键(row key)
* 支持分片
* 使用行、列、列族和单元格
功能:
* 支持向外扩展
* 使用 API 和 MapReduce 来访问 HBase 表数据
* 面向列,即每一列都是一个连续的单元
* 数据总量不依赖具体某台机器,而取决于机器数量
* HBase 不支持 ACID(Atomicity、Consistency、Isolation、Durability)
* 适合结构化数据和非结构化数据
* 一般都是分布式的
* HBase 不支持事务
* 不支持 Join
版权声明: 本文为 InfoQ 作者【大数据技术指南】的原创文章。
原文链接:【http://xie.infoq.cn/article/f94c62194b88734c709bb34db】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论