你也能看懂Hadoop——Hbase

通过之前的介绍,我们了解了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大数据应用

你也能懂大数据

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112B0HVJL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券