博文说明:1、研究版本hbase0.94.12;2、贴出的源代码可能会有删减,只保留关键的代码。
hbase的锁是采用jdk的ReentrantReadWriteLock类实现
一、HRegion有两种锁:lock、updatesLock,这两种锁均是ReentrantReadWriteLock类的实例,基本上所有的region操作均需要获取lock的read共享锁,在获取了lock的read锁后,如果是增加或者删除等影响数据内容的操作则还需要获取updatesLock的read锁。
1、HRegion的lock锁影响如下的操作:

其中关闭region的doClose方法需要持有lock的write锁,startBulkRegionOperation在进行跨列簇处理时也要求持有lock的writ锁,其它均只需持有lock的read锁,startBulkRegionOperation是在使用工具LoadIncrementalHFiles装载通过HFileOutputFormat输出的HFile文件到一个已经存在的表时执行的方法,因此执行该操作最好是在该region空闲时执行。
受lock锁影响的sta

本文深入探讨了HBase中HRegion的lock和updatesLock锁机制,详细解释了它们如何影响region的关闭、装载数据、flush操作及MemStore的读写。通过ReentrantReadWriteLock实现,确保数据一致性并防止错误服务。合理调整相关配置可以优化性能。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



