搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Hbase
›
介绍解说
›
浅淡HBase的ACID
0
2
1
分享
浅淡HBase的ACID
hyj
2013-12-19 22:25:44
发表于
介绍解说
[显示全部楼层]
阅读模式
关闭右栏
2
12385
About云VIP帮助找工作和提升
众所周知,ACID是指原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability)。
HBase对同一行数据的操作提供ACID保证。HBASE-3584支持多操作事务,HBASE-5229支持多行事务,但原理都是一样的。
那么,HBase中的ACID是如何工作的呢?
HBase采用MVCC来实现ACID,同时HBase中没有混合读写事务。简单说来,HBase的ACID就是在各个RegionServer上维护一个我称之为“严格单调递增事务号”(strictly monotonically increasing transaction numbers)的东东。
当一个写事务(put,delete)开始时将获取到下一个最高事务号,HBase将这个号称为“写入号”(WriteNumber);当一个读事务(scan,get)开始时将获取到上一次提交成功的事务号,这个号被称为“读取点”(ReadPoint)。
每个创建的KeyValue对都会被标记上它的事务写入号。HBase中将这个标签称为”memstore时间戳”。注意将这个时间戳和应用中可见的时间戳区分开。
HBase中一个标准写事务的流程如下:
锁行,拒绝对相同行的并发写
获取当前的写入号
将修改写入“写前日志”WAL(Write Ahead Log)
将修改写入Memstore,同时用获取到的写入号标记KeyValue对
提交事务,即尝试将读取点滚到获取到的写入号(这样变更就可以对所有新的Scan可见)
打开行锁
一个标准读事务的流程如下:
打开Scanner
获取当前读取点
筛选出所有memstore时间戳大于读取点的KeyValue对
关闭Scanner
尽管实际的流程要更复杂,但上面的流程已经足以阐明要点。另外,你可能注意到,虽然读请求根本没有锁,我们一样实现了ACID。
HBase的事务非常短暂,且所有事务都是串行提交的(我们都知道:所有的事务可以工作都是基于严格串行的提交的,否则一个稍早的未提交的事务可能由于在他之后的事务先提交了而变的可见了)。HBase维护者一个未完成的事务列表。一个事务想提交,必须等到之前所有的事务都提交(注意:变更依然是及时的,并发的,只有提交才是串行的)。
另外,因为HBase不保证RegionServer间的一致性,所以MVCC数据只需要保存在单台RegionServer的内存中。
接着咱们来说说HBase中比较有意思的压缩。HBase中压缩是指:将多个小存储文件(从memstore刷新到磁盘上的)合并成一个大文件,同时进行垃圾回收。这里的垃圾是指过期的,或版本太老,或被标记为删除的KeyValue对。
想象一下,压缩的时候一个Scanner过来取数据,会发生什么呢?
有可能只读出行的一部分。HBase的行由一系列带版本号的KeyValues对组成,这些KeyValue并不能反映事务结束后的最终结果。HBase的解决方案是压缩开始时记录正在读取的最早的一个读取点,然后只压缩比这个读取点小的KeyValue对。这个逻辑让HBase即使在并发刷新memstore到磁盘时也能够保证ACID。HBASE-2856开始支持这个逻辑,HBASE-5569对删除标志支持同样的逻辑。
最后说一句,当KeyValue的memstore时间戳比任何Scanner的读取点都小时,可以被清零。即,对于任何Scanner这条keyValue都是可见的,因为之前的Scanner已经完成了。
补充几点:
为了不拖延正在等待提交的事务,即使事务失败了,读取点依然会向前滚
每当变更写入WAL时,就会产生一条记录,并没有单独的提交记录
一台RegionServer挂了之后,WAL记录写成功的但未执行的事务最终会在另外一台RegionServer上重新执行,WAL记录未写成功的则会被丢弃
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(2)人评论
电梯直达
正序浏览
刚果
发表于 2015-9-11 15:19:31
回复
使用道具
举报
显身卡
一曲离殇
发表于 2016-3-30 18:26:44
高手
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
hyj
超级版主
关注
1689
主题
2216
帖子
468
粉丝
TA的主题
ChatGPT上线了IOS app,很给力
2023-5-19
About云2023年05月19日每日一读
2023-5-19
数澜科技数据中台项目规范-V1.0.0
2023-5-18
现代数据架构
2023-5-18
12 个真正重要的数据质量指标
2023-5-18
24小时热文
从InfluxDB看时序数据的处理
哈佛通识教育红皮书 (北大高等教育文库·大
华为:HBase常见问题维护手册V1.0
字节三面过程,最终还是凉了
2024年求职攻略:掌握这4个习惯,迅速斩获
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈