关于HBase的几个问题

1.我们常说HBase是“数据即日志”的数据库,它是怎样修改和删除数据的?和Oracle这类传统的RDBMS有什么区别?

HBase是一个分布式的、面向列的数据存储系统。通过在HDFS上提供随机读写来解决Hadoop不能处理的问题。

由于HBase的数据文件在HDFS系统中,因此本质上很难修改和删除数据。

在HBase中,修改和删除数据都是增加1个新版本的数据(时间戳为最,旧版本的数据并没有发生变化。

标准的RDBMS是模式固定、面向行的数据库且具有ACID性质和复杂的SQL查询处理引擎。

RDBMS强调事务的“强一致性”、参照完整性、数据抽象与物理存储相对独立,以及基于SQL语言的复杂查询支持。

RDBMS需要大量的I/O,因此要求更昂贵的硬件。

Oracle没有数据的版本概念,在修改和删除数据时不会增加新的数据记录,直接对老数据进行修改或删除。一旦完成修改或删除,则原始数据发生变化。


2 HBase合并storefile的原因是什么?在合并的过程中会做什么操作?如果在合并过程中恰好有涉及到有关storefile的查询发生,会发生什么情况(这个问题需要自行研究)?

HBbase的新数据首先是放在MemoryStore中的,数据量超过阈值后才会被写入物理文件StoreFile。

因此,这些物理文件StoreFile初次的容量都不大(内存的映射)。
HBase会定时合并这些较小的StoreFile,形成较大的StoreFile更有利于HDFS物理文件的读操作。

而且,合并时会删除其中过期的旧版本数据和被删除的数据。
如果在合并过程中恰好有涉及到有关storefile的查询发生的话,HBase先是把小storefile加载到内存中,用户可以在内存中检索相关数据,
其实内存中做存在一个独立镜像备份专门提供查询,当合并完成后内存空间中的镜像备份才会被撤销。


3 HBase具有怎样的一致性水平?

对于分布式系统,有一个非常重要的CAP理论,指的是分布式(或者共享数据)系统的设计中,至多只能提供三种重要特性中的两个--一致性、可用性和容忍网络区分。

简单的说,一致性指如果一个人向数据库写了一个值,那么其他用户能够立刻读取这个值,可用性意味着如果一些节点失效了,
集群中的分布式系统仍然能继续工作,而容忍分区意味着,如果节点被分割成两组无法互相通信的节点,系统仍然能够继续工作。

Hbase,是一种最终一致性的系统,为了高的可用性牺牲了一部分的一致性。
HBase架构在HDFS系统之上,是分布式的NoSQL列式数据库,它是一个CP型数据库(相反Cassandra是一个AP型数据库)。每一行数据仅在一个Region中,
没有多余副本可读,保证了数据的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值