HBase是基于Hadoop HDFS的一个高可用、高性能、面向列、可伸缩、实时读写的分布式数据库系统,主要存储非结构化和半结构化数据。其利用Hadoop HDFS作为文件存储系统,Hadoop MapReduce处理HBase中的海量数据,Zookeeper作为分布式协同服务。
1 HBase概述
1.1 HBase的优缺点
优点
高可用:WAL预写式日志(Write-Ahead Log)机制保证数据写入时不会因机器异常丢失数据,Replication机制保证机器故障时,数据不会丢失,且HBase底层使用HDFS,HDFS有备份
高性能:底层LSM(Log-Structured Merge Tree)数据结构和Rowkey有序排列使得HBase具有高写入性能;Region切分、主键索引和缓存机制使得HBase面对海量数据具备随机读取性能,该性能针对Rowkey查询达到毫秒级
面向列:面向列存储和权限控制,列独立检索,支持快速数据索引
稀疏:空列不占内存
大:一张表可以多达十亿行、上百列
多版本:支持数据多版本
数据类型单一:HBase中数据类型都是字符串
无模式: 每一行都有一个可以排序的rowKey和任意多的列,列可以根据需要动态增加,同一张表的不同行可以有不同的列。
缺点
单一Rowkey固有的局限性决定了不能有效支持多条件查询
对join以及多表合并数据的查询性能不好
更新过程中有大量的写入和删除操作,需要频繁合并和分裂降低存储效率
不适合大范围扫描查询
不直接支持SQL语句查询,对关系模型支持不好,分区和索引模式设计比较困难