Hbase简介

1.Hbase 是什么?

HBase是一种构建在HDFS之上的分布式、面向列的存储系统。对于超大规模数据集进行实时读写或随机访问时,可以使用HBase。

HBase通过线性方式水平增加节点来进行扩展。HBase不是关系型数据库,也不支持SQL。HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS作为其文件存储系统类似, HBase 利用Hadoop HDFS 作为其文件存储系统;Google 运行MapReduce 来处理Bigtable中的海量数据, HBase 同样利用Hadoop MapReduce来处理HBase中的海量数据, HBase 利用Zookeeper来协调集群环境。

Hbase是Hadoop生态系统的一部分,它提供对Hadoop文件系统中数据的随机实时读/写访问。可以直接或通过HBase将数据存储在HDFS中。 可以使用HBase随机读取/访问HDFS中的数据。 HBase位于Hadoop文件系统之上,提供读写访问。

1542094475677708.png

2. 为什么使用Hbase?

HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,HBase是基于keyvalue的一种数据存储方式,但不仅仅是简单的一个key对应一个 value,很可能需要存储多个属性的数据结构,没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。

可以将HBase中的表看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。只需要将数据存储到Hbase的对应的column families

Hbase 具有如下特点:

  • 大:一个表可以有上亿行,上百万列。

  • 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。

  • 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

  • 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。

  •  数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。

  • 数据类型单一:HBase中的数据都是字符串,没有类型。

3. Hbase HDFS 区别

1542094772495416.png

4. HBase中的存储机制

HBase是一个面向列的数据库,其中的表按行排序。 表模式仅定义列族, 表格有多个列族,每个列族可以有任意数量的列。 后续列值连续存储在磁盘上, 且列值没有类型,都是字符串。 表中的每个单元格值都有一个时间戳。 简而言之,在HBase中:

? 表是行的集合;

? 行是列族的集合;

? 列族是列的集合;

? 列是键值对的集合;

下面给出了HBase中表的示例模式:

1542094885295145.png

5. 面向列和面向行的数据库

什么是列存储?列存储不同于传统的关系型数据库,其数据在表中是按列存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因 此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就 更容易为这种聚集存储设计更好的压缩/解压算法。

1542094987644249.png

6. Hbase 关系型数据库

1542095054168625.png

7. 什么时候使用Hbase?

Apache HBase用于随机实时读取/写入大数据;

可以在普通的硬件服务器集群上运行非常大的表格;

Apache HBase是一个非关系型数据库,类似GoogleBigtable BigtableGoogle文件系统上运行,Apache HBase同样在HadoopHDFS之上运行;

阿里,FacebookTwitterYahooAdobe等公司在内部使用HBase

 

Hbase简介

发表评论

邮箱地址不会被公开。 必填项已用*标注

63 ÷ 二十 一 =

滚动到顶部