大数据&云计算HBase系统特性-优点和缺点


HBase可以以低成本来存储海量的数据 , 并且支持高并发随机写和实时查询 。
大数据&云计算HBase系统特性-优点和缺点
本文插图
Hadoop v3.1大数据技术快速入门19.8币38人已购查看一、HBase的优点 与其他数据库相比 , HBase在系统设计以及实际实践中有很多独特的优点 。
* 容量巨大:HBase的单表可以支持千亿行、百万列的数据规模 , 数据容量可以达到TB甚至PB级别 。 传统的关系型数据库 , 如Oracle和MySQL等 , 如果单表记录条数超过亿行 , 读写性能都会急剧下降 , 在HBase中并不会出现这样的问题 。
* 良好的可扩展性:HBase集群可以非常方便地实现集群容量扩展 , 主要包括数据存储节点扩展以及读写服务节点扩展 。 HBase底层数据存储依赖于HDFS系统 , HDFS可以通过简单地增加DataNode实现扩展 , HBase读写服务节点也一样 , 可以通过简单的增加RegionServer节点实现计算层的扩展 。
* 稀疏性:HBase支持大量稀疏存储 , 即允许大量列值为空 , 并不占用任何存储空间 。 这与传统数据库不同 , 传统数据库对于空值的处理要占用一定的存储空间 , 这会造成一定程度的存储空间浪费 。 因此可以使用HBase存储多至上百万列的数据 , 即使表中存在大量的空值 , 也不需要任何额外空间 。
* 高性能:HBase目前主要擅长于OLTP场景 , 数据写操作性能强劲 , 对于随机单点读以及小范围的扫描读 , 其性能也能够得到保证 。 对于大范围的扫描读可以使用MapReduce提供的API , 以便实现更高效的并行扫描 。
* 多版本:HBase支持多版本特性 , 即一个KV可以同时保留多个版本 , 用户可以根据需要选择最新版本或者某个历史版本 。
* 支持过期:HBase支持TTL过期特性 , 用户只需要设置过期时间 , 超过TTL的数据就会被自动清理 , 不需要用户写程序手动删除 。
* Hadoop原生支持:HBase是Hadoop生态中的核心成员之一 , 很多生态组件都可以与其直接对接 。 HBase数据存储依赖于HDFS , 这样的架构可以带来很多好处 , 比如用户可以直接绕过HBase系统操作HDFS文件 , 高效地完成数据扫描或者数据导入工作;再比如可以利用HDFS提供的多级存储特性(Archival Storage Feature) , 根据业务的重要程度将HBase进行分级存储 , 重要的业务放到SSD , 不重要的业务放到HDD 。 或者用户可以设置归档时间 , 进而将最近的数据放在SSD , 将归档数据文件放在HDD 。 另外 , HBase对MapReduce的支持也已经有了很多案例 , 后续还会针对Spark做更多的工作 。
大数据&云计算HBase系统特性-优点和缺点
本文插图
专栏Spring Cloud Alibaba微服务实战作者:软件架构29.8币66人已购查看二、HBase的缺点
任何一个系统都不会完美 , HBase也一样 。 HBase不能适用于所有应用场景 , 例如:
* HBase本身不支持很复杂的聚合运算(如Join、GroupBy等) 。 如果业务中需要使用聚合运算 , 可以在HBase之上架设Phoenix组件或者Spark组件 , 前者主要应用于小规模聚合的OLTP场景 , 后者应用于大规模聚合的OLAP场景 。
* HBase本身并没有实现二级索引功能 , 所以不支持二级索引查找 。 好在针对HBase实现的第三方二级索引方案非常丰富 , 比如目前比较普遍的使用Phoenix提供的二级索引功能 。
* HBase原生不支持全局跨行事务 , 只支持单行事务模型 。 同样 , 可以使用Phoenix提供的全局事务模型组件来弥补HBase的这个缺陷 。
可以看到 , HBase系统本身虽然不擅长某些工作领域 , 但是借助于Hadoop强大的生态圈 , 用户只需要在其上架设Phoenix组件、Spark组件或者其他第三方组件 , 就可以有效地协同工作 。


推荐阅读