大数据体系之HBase的产生

时间:2021-10-15 08:25:59

一、关系型数据库的缺陷

     1)很难进行分布式部署,I/O瓶颈显著,依赖于强大的服务器。

     2)难以处理非结构化数据

二、CAP定律(推动关系型数据库向非关系型数据库转变)

     在任何分布式系统中,只可能满足一致性,可用性和分区容忍性三者中的两者,不可能全部满足。

三、什么是分区容忍性

    (一)分区:在一个分布式系统里,节点组成的网络本来应该是联通的,然而可能因为一些故障,使得有些节点之间不再联通,整个网络就分成了几块区域。数据就分散在这些不联通的区域。当你一个数据项只在一个节点中保存,那么分区出现之后,和这个节点不联通的部分就访问不到这个数据,这是分区不能容忍的。

   (二)提高分区容忍性的办法:将一个数据项复制到多个节点上,那么出现分区之后,这一项数据就可能分布到各个区里。

    (三)一致性问题:数据复制到多个节点,可能会导致多个节点上的数据不一致,。要保证节点数据一致,每次写操作都要等待全部节点写成功。而这样的等待又可能会带来可用性的问题。

     总的来说。数据存在的节点越多,分区容忍性就越高,但是复制更新的数据就越多,一致性就越难保证。s为了保证一致性,更新所有节点数据的时间就越长,可用性就会降低。

四、Hbase-强一致性数据库

    Hbase是强一致性的。因为基于Hadoop,所以Hbase的数据是以HDFS的file(Hfile)的形式保存。换句话说,默认情况下Hfile保存在三个不同节点上。

    思考:①既然有三个副本,如何保证Hbase的强一致性的?

             Hfile是已经持久化在硬盘上,所以Hfile是不能改变。一旦在某一个DataNode上生成一个Hfile后就会异步更新到其他两个DataNode,这3个Hfile就会保持一致。

              ②数据在不同更新,如何保证修改?          

                Hbase之所以是优先写数据库,是因为所有写操作默认先写入一个空的内存文件,该内存文件被写满后整体提交到HDFS.

       (四)、NoSQL(not only sql)的特点

              ①拓展性强

              ②并发性能好

             ③数据模型灵活