分布式数据库HBase

第五章:分布式数据库HBase

1.HBase是Google BigTable的一个开源实现

2.这个老师没有点到,可我认为需须要了解一点这个,不然你会对为什么有了HDFS还需要HBase而感到困惑:

  • HDFS实现了一个分布式的文件系统,虽然这个文件系统可以以分布和可扩展的方式有效存储海量数据,但文件系统缺少结构化/半结构化数据的存储管理和访问能力,而且编程接口对于很多应用来说还是太底层了。这就像我们有了NTFS,EXT3这样的单机文件系统后,我们还是需要用到Orcale,IBM DB2,SQL server这样的数据库来帮助我们管理数据一样。HBase之于HDFS就类似于数据库之于文件系统。(意思差不多就是HBase是在HDFS基础上更为抽象的一个接口)

3.NoSQL数据库

  • 由于传统数据库在容量和数据格式上都难以适应半结构化/非结构化大数据的处理,人们提出了NoSQL数据库技术。NoSQL数据库一般并不提供SQL语言支持,但由于大量数据库应用开发者仍习惯用SQL编程,因此目前NoSQL的一个发展趋势是,尽量提供与SQL已知的编程接口。例如Hadoop系统中的Hive即提供了一种类似于SQL的HiveQL查询接口;Cloudera Impala也是一个意在为HBase提供SQL查询接口的系统等等。
  • 那么在NoSQL上提供SQL查询机制,这就导致了一个新技术的发展趋势,即:
    将传统的面向结构化数据查询的SQL与面向半结构化/非结构化大数据查询的NoSQL进行统一和融合,从而出现了一种新的数据查询技术NewSQL

4.目前常见的NoSQL的数据库有:Apache Cassandra,MongoDB,Apache HBase,

5.HBase的一些主要技术特点包括:
(1).列式存储:将表中的列划分为列族,因为查询时通常是基于列名为条件查询,这样就只需要扫描相关列名下的数据,避免了关系数据库基于行存储的方式下需要扫描所有行的数据记录,以此可以大幅提高访问性能。
(2).表数据是稀疏的多维映射表:表中的数据通过一个行关键字(row key),一个列关键字(column key)以及一个时间戳(time stamp)进行索引和查询定位,通过时间戳允许数据有多个版本。
(3).读写的严格一致性:就是说对某行的读取必然能读到这行的最新数据。这是HBase相对于Cassandra这样的“最终一致性”系统的最大区别。
(4).提供很高的数据读写速度
(5).良好的线性可扩展性:可以通过增加集群规模来线性的提高HBase的吞吐量和存储容量
(6).提高海量的数据存储能力:可提供高达几百亿条数据记录存储能力
(7).数据会自动分片
(8).对于服务器故障,HBase有自动的失效检测和恢复能力,保证数据不丢失
(9).提供了方便的与HDFS和MapReduce集成的能力
(10).提供Java API作为主要的编程接口

6.根据HBase的(1)(2)特性可以看出

  • 对于HBase来说,它根本不认为存在行列这样的概念,在实现时只认为存在键值对这样的概念。因此二维表中字段值的空洞,对于HBase来说在物理实现上是不存在的,而不是所谓的值为null。
  • 另外HBase中的row key只能是一个字段而不可以是多个字段的组合。并且HBase保证相邻row key的行在存储时必然是相邻存放的。
    并且在具体实现上,一张表中的不同列族是分开独立存放的。意思就是在HDFS存储时,列族1是一组文件,列族2又是另一组文件,两者绝不混合存储。

7.关于时间戳:
每个存储单元中,不同版本的数据按照时间戳的大小倒序排序,即最新的数据排在最前面,这样在读取时,将先读取到最新的数据。
同时为了避免存在过多版本造成存储和管理的负担,HBase提供了两种数据版本回收方式:
(1).保存数据的最后n个版本。即过老的版本清除。
(2).保存最近一段时间内的版本。用户可针对每个列族设置TTL(Time to live)

8.HBase支持以下几种查询方式:
(1).通过单个row key访问
(2).通过row key的范围来访问
(3).全表扫描

9.分布式协调服务器Zookeeper提供了高可靠的锁服务和高可靠的状态数据小文件的读写。这样使得节点在集群中同步并且协调。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值