打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
总结一下HBase各种级别的锁以及对读写的阻塞 | IT瘾

总结一下HBase各种级别的锁以及对读写的阻塞

标签:总结hbase| 发表时间:2013-10-22 16:51 | 作者:yangbutao
分享到:
出处:http://blog.csdn.net

为了保证并发操作时数据的一致性和性能,HBase中应用了各种各样高效的可重入锁,包括行级别的rowlock、mvcc,region级别的读写锁,store级别的读写锁,memstore级别的读写锁等等。

1、  行级别的锁RowLock

HBase中为了解决行级别在并发操作中的一致性问题,采用了Rowlock机制。保证只有同一个线程同时对该行做操作。当然rowlock有lease租约的概念,超过期限,自动释放该行锁

2、  MVCC

处于并发性能的考虑,Rowlock只在write数据时采用,对于读写并发操作,HBase采用了MVCC解决方案。

基本原理是writer操作会经过WAL、Memstore等一系列过程,首先在Rowlock操作后,立即分配一个writer number,每个cf column cell在store中都会带上这个writer number,在写操作结束即release lock前,会标记writer number已经结束;每个读操作在开始时(readpoint)会分配最大的处于结束的writer number,即最新的处于结束的writer number(memstore中的值可用存在写操作未结束的,这些值不可以读,所以在flush cache的时候必须等待memstore中所有的值都是写结束的)。详细的MVCC分析可以参见以前写的blog: http://blog.csdn.net/yangbutao/article/details/8998800

3、  Region级别的锁

在做更新操作时,需要判断资源是否满足要求,如果到达临界点,则申请进行flush操作,等待直到资源满足要求(参见Region中的checkResource)

Region update更新锁(updatesLock),在internalFlushCache时加写锁,导致在做Put、delete、increment操作时候阻塞(这些操作加的是读锁)。

Region close保护锁(lock),在Region close或者split操作的时(加写锁),阻塞对region的其他操作(加读锁),比如compact、flush、scan和其他写操作。

4、  Store级别的锁

flush过程包括,

        a 、prepare(基于memstore做snapshot)

        b、flushcache(基于snapshot生成临时文件)

        c、commit(确认flush操作完成,rename临时文件为正式文件名称,清除mem中的snapshot)

其中在flush过程的commit阶段,compact过程的completeCompaction阶段(rename临时compact文件名、清理旧的文件),close store(关闭store),bulkLoadHFile,会阻塞对store的写操作。

5、  MemStore级别的锁

对Store的写操作会调用Memstore的相关操作,在对memstore做snapshot以及清除snapshot的时候会阻塞其他操作(如add、delete、getNextRow)。

 

 

作者:yangbutao 发表于2013-10-22 16:51:21 原文链接
阅读:75 评论:0 查看评论

相关 [总结 hbase] 推荐:

hbase问题总结

- - 企业架构 - ITeye博客
做简单的incr操作时出现,原因是之前put时放入的是int  长度为 vlen=4 ,不适用增加操作,只能改为long型 vlen=8. 目前把10.xx.xx.37这台机器下线,运行一夜稳定,没有出现因split造 成的阻塞. Hmaster的日志显示这台region server 不停的open close,不做任何split 或flush.

"Hadoop/MapReduce/HBase"分享总结

- - ITeye博客
此分享是关于hadoop生态系统的简单介绍包括起源到相对应用. Hadoop和HBase.pdf (2.1 MB). 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

"HBase_介绍和HBase云存储"分享总结

- - ITeye博客
此分享包括:HBase_介绍和HBase云存储的汇总. HBASE基于HDFS存储;Hbase实时随机读写;Hbase是线性扩展,自动分表,支持MapReduceHbase Client使用HBase的RPC机制与Master和RegionServer进行通信,对于管理类操作,Client与Master进行RPC;对于数据读写类操作,Client与RegionServer进行RPC.

HBase性能优化方法总结

- - IT技术博客大学习
标签:   HBase.     本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法. 有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考: 淘宝Ken Wu同学的博客.     默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分.

HBase工程师线上工作经验总结----HBase常见问题及分析

- - 互联网 - ITeye博客
阅读本文可以带着下面问题:. 1.HBase遇到问题,可以从几方面解决问题. 2.HBase个别请求为什么很慢. 3.客户端读写请求为什么大量出错. 4.大量服务端exception,一般原因是什么. 6.Hbase数据写进去,为什么会没有了,可能的原因是什么. regionserver发生abort,遇到最多是什么情况.

hbase bulk load 小实践及一些总结

- - CSDN博客互联网推荐文章
转载请注明出处: http://blog.csdn.net/lonelytrooper/article/details/17042391. 很早就知道bulk load这个东西,也大致都清楚怎么回事,居然直到前几天才第一次实践... . 这篇文章大致分为三个部分:. 使用hbase自带的importtsv工具.

总结一下HBase各种级别的锁以及对读写的阻塞

- - CSDN博客互联网推荐文章
为了保证并发操作时数据的一致性和性能,HBase中应用了各种各样高效的可重入锁,包括行级别的rowlock、mvcc,region级别的读写锁,store级别的读写锁,memstore级别的读写锁等等. 1、  行级别的锁RowLock. HBase中为了解决行级别在并发操作中的一致性问题,采用了Rowlock机制.

hbase介绍

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
hbase是bigtable的开源山寨版本. 是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统. 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作). 主要用来存储非结构化和半结构化的松散数据.

Riak对比HBase

- - NoSQLFan
文章来自 Riak官方wiki,是一篇Riak与HBase的对比文章. Riak官方的对比通常都做得很中肯,并不刻意偏向自家产品. 对比的Riak版本是1.1.x,HBase是0.94.x. Riak 与 HBase 都是基于 Apache 2.0 licensed 发布. Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable.

[转]HBase简介

- - 小鸥的博客
   Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能. 其目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据,并且有数百万列元素组成的数据表. Hbase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥Hbase处理大数据量等功能,需要使用Hadoop作为文件系统. 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hbase万亿级存储性能优化总结
HBase 底层原理详解
HBase 性能优化笔记
大数据开发之HBase异常问题分析
Hbase性能调优(二)
LSM树由来、设计思想以及应用到HBase的索引
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服