HBase1.1.2 row lock

本文介绍了在HBase 1.1.2版本中如何处理行级锁的问题。当多个线程尝试根据value更新记录时,传统的直接判断方法会导致多条记录插入。通过使用HTable.checkAndPut()方法,可以实现类似行锁的功能,确保只有一个线程能成功插入记录,从而避免数据冲突。测试验证了这种方法的有效性。
摘要由CSDN通过智能技术生成

版本:

HBase:1.1.2;Hadoop2.6.0;Eclipse:Mars.1 Release (4.5.1);


应用场景:HBase中有一个表,里面有一条记录,如下:


现在需要根据value的值,比如当其为“true”的时候进行更新操作(也就是插入操作,表设置Versions为100),更新为false;

问题描述:

1) 当只有一个线程来操作的时候,可以直接取得值,然后根据值来判断即可进行插入;

2)如果有多个线程的话(比如10个线程),那么1)的方法就不行了,会直接插入10条记录(因为有多个版本,所以会查到11条记录);

3)如果使用rowlock的话,可以解决这个问题,在进行put的时候,去获取rowlock,如果获取不了(其他线程已经先获得了rowlock),那么就不插入;

4)但是,rowlock在hbase之前的版本是有的,但是后面的版本就没有了(性能影响,所以hbase把client的rowlock去掉了);

那么,怎么办?

参考ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值