通过之前的介绍,我们了解了Hadoop框架下两个核心技术,我们发现这两个核心技术有一个共同的不足:操作数据延时性较高,不适合实时操作的场景。那么今天我们来看看Hadoop框架下可以实现实时读写访问的组件——Hbase。
工程师
什么是Hbase?
晓智
Hbase全称为Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
Hbase在Hadoop生态圈中的位置
通过之前的介绍我们了解到:MapReduce是Hadoop生态圈中的分布式计算框架,HDFS为Hadoop生态圈中的分布式文件存储的服务,那么Hbase在Hadoop框架中扮演着什么样的角色呢?简单来说,Hbase类似于传统的关系型数据库,是Hadoop框架中的结构化数据存储服务,是一种列式的分布式数据库。换言之:HDFS管理的是存放在多个硬盘上的数据文件,而Hbase管理的是类似于key—value映射的表。即便如此,Hbase的底层依旧依赖 HDFS 来作为其物理存储。
此外,Hbase的工作还需要zookeeper的协助,Zookeeper在此提供一些配置服务,维护元信息和命名空间等服务,Hbase在Hadoop生态圈中的位置如下图所示:
Hbase与传统关系数据库的区别
在传统的数据库RDBMS(Relational Database Management System)中,数据是按照行存储的,没有索引的查询将使用大量的I/O,建立索引和视图需要花费大量的时间和资源,面对查询需求,数据库必须大量膨胀才能满足性能要求。而在Hbase中,数据是按列存储的,查询时只访问所涉及的列,大量降低系统I/O,数据类型一致,可以高效压缩存储。下面我们来具体看看数据在两类数据库中排布方式的区别:
数据在 RDBMS 中的排布示例
数据在 HBase 中的排布(逻辑上)
从上面示例表中,我们可以看出,在 HBase 中有Column Family 的概念,简称为 CF。CF 一般用于将相关的列(Column)组合起来。上述例子中,“姓”和“名”组合成为info,组合的形式是类似于字典的key-value形式。在物理上 HBase 其实是按 CF 存储的,只是按照 Row-key 将相关 CF 中的列关联起来。物理上的数据排布大致可以如下表所示。
数据在 HBase 中的排布
在了解了两种数据库在数据排布方式上的区别后,我们来看看它们在其他方面的区别,具体如下表所示:
通过对比Hbase和RDBMS的区别,我们可以发现Hbase对数据的存储方式和数据结构进行了修改和规整,让其更加善于去处理大数据的场景,但也因此导致Hbase有其对应的局限性。Hbase的设计目标并不是替代RDBMS,而是对RDBMS的一个重要补充。因此我们在使用的时候,应该按照具体应用场景来判断该使用哪种类型的数据库。
HBase的特点和局限
特点:
1)表规模大:一个表可以有上亿行,上百万列。
2)面向列:面向列的存储和权限控制,列独立检索。
3)稀疏性:对于为空的列,并不占用存储空间,因此表可以设计的非常稀疏。
局限:
1)只能做简单的key-value查询,复杂的统计sql做不到。
2)只能在row-key 上做快速查询。
文章转载自:华星智能制造规划处
Hadoop大数据应用
你也能懂大数据
领取专属 10元无门槛券
私享最新 技术干货