HBase系统特性
2020-12-22 本文已影响0人
掩流年
HBase是一种“ NoSQL”数据库。NoSQL数据库的特性往往是不同于传统的RDBMS,所以对于多数NoSQL数据库而言,都有不同的特性,比如用作k-v存储的Redis,或者存储Json类型数据的Mongo都被统一称为NoSQL。从功能而言,很大程度上,可以称HBase为一个分布式数据库。 从技术上来看,HBase实际上比“数据库”更像是“数据存储”,因为它缺少RDBMS中的许多功能,例如类型列,二级索引,触发器和高级查询语言等。
HBbase通过RegionServer来进行扩展,对于RDBMS而言,到达一定数量只能扩展到一个点-特别是单个数据库服务器的大小-为了获得最佳性能,需要专用的硬件和存储设备。HBase通过扩充机器可以线性的增加其存储能力和计算能力。
HBase的优势
- 高度一致的读/写:HBase不是“最终一致”的数据存储。 这使其非常适合诸如高速计数器聚合之类的任务。比如为Spark任务分块计算提供查询。
- 自动化处理:HBase表通过区域分布在集群上,并且随着数据的增长,区域会自动拆分和重新分布。自动RegionServer故障转移。
- 稀疏性:HBase支持大量稀疏存储,即允许大量列值为空,并不占用任何存储空间。
- 扩展性:HBase底层存储依赖HDFS,HDFS可以通过增加DataNode实现扩展。HBase也可以简单的增加RegionServer进行内存和计算性能的扩展,
- 块缓存和Bloom过滤器:HBase支持块缓存和Bloom过滤器,以进行大量查询优化。
- 生态:HBase支持良好的Java API。并且HBase是Hadoop生态中的核心成员之一,很多生态组件都可以与其直接对接。
HBase的劣势
- HBase不支持很复杂的聚合运算(如Join、GroupBy等)。(当然这些可以通过表设计方式,或者加入中间表等方式解决)
- HBase并没有实现二级索引功能,所以不支持二级索引查找。
- HBase原生不支持全局跨行事务,只支持单行事务模型。