HBase学习解析之起源.md

概述

HBase是谷歌公司BigTable的开源实现。BigTable是一个分布式存储系统,利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据,使用谷歌分布式文件系统GFS作为底层数据存储,并采用Chubby提供协同服务管理,可以扩展到PB级别的数据和上千台机器,具备广泛应用型、可扩展性、搞性能和高可用性等特点。
BigTable具备以下特点:

  • 支持大规模海量数据;
  • 分布式并发数据处理效率极高;
  • 易于扩展且支持动态伸缩;
  • 适用于廉价设备;
  • 适合于读操作不适合写操作。

HBase简介

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。
HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
HBase和BigTable的底层技术对应关系如下表所示:
HBase和BigTable的底层技术对应关系

HBase与传统的关系数据库的区别

  • 数据类型。
    关系数据库采用关系模型,具有丰富的数据类型和存储方式。HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串,用户可以把不同格式的数据化数据和非结构化数据都序列化成字符串保存到HBase中,用户需要自己编写程序把字符串解析成不同的数据类型。
  • 数据操作。
    关系数据库中包含了丰富的操作,如:增、删、改、查等,其中会涉及复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。
    HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除和清空等。因为HBase在设计上就避免了复杂的表与表之间的关系,通常只采用单表的主键查询,所以它无法实现向关系数据库中那样的表与表之间的连接操作。
  • 存储模式。
    关系数据库是基于行模式存储的,元组或行会被连续地存储在磁盘页中。
    HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离 的。其优点是可以降低I/O开销,支持大量并发用户查询。因为仅需要处理可以回答这些查询的列,而不需要处理与查询无关的大量数据行;同一个列族中的数据会被一起进行压缩,由于同一列族内的数据相似度较高,因此可以获得较高的数据压缩比。
  • 数据索引。
    关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引–>行键,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。由于HBase位于Hadoop框架之上,因此可以使用Hadoop MapReduce来快速、高效地生成索引表。
  • 数据维护。
    在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧的版本任然保留。
  • 可伸缩性。
    关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,因此能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
  • 其他
    相对于关系型数据库来说,HBase也有自身的局限性,如HBase不支持事务,因此无法实现跨行的原子性。

HBase的访问接口

HBase提供了Native Java API、HBase Shell、Thrift Gateway、REST Gateway、Pig、Hive等多种访问方式。
HBase访问接口

猜你喜欢

转载自www.cnblogs.com/yin1361866686/p/12100963.html
今日推荐