非关系型数据库---HBase

     非关系型数据库主要有四种数据存储类型:键值对存储(key-value)-----Redis,文档存储(document store)-----MongodDB,基于列的数据库(column-oriented)-----HBase,还有就是图形数据库(graph database)-----Neo4j。每一种都会解决相应的问题,这些问题是关系型数据库所不能解决的。而在实际应用中都会将这几种情况结合起来实现相应的功能。


HBase  

       列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据;列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。

      HBaseHadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBaseGoogle BigTable的开源实现,模仿并提供了基于Google文件系统的BigTable数据库的所有功能。HBase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,需要使用Hadoop作为文件系统。HBase仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务,主要用来存储非结构化和半结构化的松散数据。

     Hbase中表的特点:大,稀疏,面向列


HBase在互联网存储的几个应用场景:

1.抓取增量数据

       使用HBase 作为数据存储,抓取来自各种数据源的增量数据,如抓取用户交互数据,以备之后进行分析、处理。

2.内容服务

       传统数据库最主要的使用场合之一是为用户提供内容服务,如URL短链接服务,可以HBase为基础,存储大量的短链接以及和原始长链接的映射关系。

3.信息交换

        Facebook的短信平台每天交换数十亿条短信,HBase可以很好的满足该平台的需求:高的写吞吐量,极大的表,数据中心的强一致性。


Hadoop生态系统中的各层系统

                                     

HBase位于结构化存储层;

HDFSHBase提供了高可靠性的底层存储支持;

MapReduceHBase提供了高性能的计算能力;

ZookeeperHBase提供了稳定服务和失败恢复机制

PigHive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单;

Sqoop则为HBase提供了方便的RDBMS数据导入功能,方便数据迁移


HBase的三个主要的功能组件

  • 库函数:链接到每个客户端;
  • 一个HMaster主服务器;
  • 许多个HRegion服务器。

HBase三层结构

1.Zookeeper文件:它记录了-ROOT-表的位置信息,即root region的位置信息。

2.-ROOT-表:只包含一个root region,记录了.META.表中的region信息。通过root region,我们就可以访问.META.表的数据。

3.META.表:记录了用户表的HRegion信息,.META.表可以有多个HRegion,保存了HBase中所有数据表的HRegion位置信息。

HBase两种文件类型

  • HFileHBaseKeyValue数据的存储格式HFileHadoop二进制格式文件,实际上HStoreFile就是对HFile做了轻量级包装,即HStoreFile底层就是HFile
  • HLogFileHBaseWALWrite Ahead Log)的存储格式,物理上是Hadoop的顺序文件。

Hbase与传统关系型数据库区别:

数据类型

HBase只有简单的字符串类型,所有类型都由用户自己处理,它只保存字符串;

关系数据库有丰富的类型选择和存储方式。

数据操作

HBase操作只有很简单的插入、查询、删除、清空等,表和表之间是分离的,没有复杂的表和表之间的关系,所以也不能也没有必要实现表和表之间的关联等操作;

传统的关系数据通常有各种各样的函数、连接操作。

存储模式

HBase是基于列存储的,每个列族都有几个文件保存,不同列族的文件是分离的;

传统的关系数据库是基于表格结构和行模式保存的。

数据维护

HBase的更新正确来说应该不叫更新,而且一个主键或者列对应的新的版本,而它旧有的版本仍然会保留,所以它实际上是插入了新的数据;

传统关系数据库里面是替换修改

可伸缩性

HBaseBigTable这类分布式数据库就是直接为了这个目的开发出来的,能够轻易的增加或者减少(在硬件错误的时候)硬件数量,而且对错误的兼容性比较高;

传统的关系数据库通常需要增加中间层才能实现类似的功能。

修改表模式需要先将表设置为不可用(disable),模式修改完成再启用表(enable)

发布了54 篇原创文章 · 获赞 8 · 访问量 2931
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览