[发明专利]基于读写锁算法对HBASE实时数据无障碍写处理方法在审
申请号: | 201710765083.7 | 申请日: | 2017-08-30 |
公开(公告)号: | CN107491314A | 公开(公告)日: | 2017-12-19 |
发明(设计)人: | 熊坪 | 申请(专利权)人: | 四川长虹电器股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/52;G06F17/30 |
代理公司: | 四川省成都市天策商标专利事务所51213 | 代理人: | 李静云,刘渝 |
地址: | 621000 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 读写 算法 hbase 实时 数据 障碍 处理 方法 | ||
技术领域
本发明涉及一种计算机软件编程应用领域,尤其涉及一种基于读写锁算法对HBASE实时数据无障碍写处理方法。
背景技术
在使用HBASE过程中发现在写入HBASE的数据量很大时,经常发生写不进去的情况,使生产队列产生大量的数据堆积。而我们基于HBASE的应用是对实时性要求很高的,一旦HBASE不能读写则会大大影响系统的使用。目前HBASE多线程写的方式有:
1)client端使用了setAutoFlush(false)以及缓存的大小XMB,当table达到XMB的时候才能自动flushCommit;若批量提交时,可设置每隔N条提交一次;
2)client端使用了setAutoFlush(false)以及异步定时刷新提交;
这两种方法的缺点是:方式1对于实时性数据不能及时提交;方式2线程不安全,当flushCommit的同时,会有其他线程对这个table进行写入。在对HBASE实时性数据处理要求很高的情况下,这两种方法均不能很好地满足在开发过程向HBASE数据库无障碍写数据的要求。
如图1、图2所示,现有的HBASE写数据方法是数据达到预设的缓存大小刷新提交到服务器。图l表示按缓存大小提交,图2是按时间刷新提交,这时,当异步刷新提交数据则需要控制写入安全。为了更好的解决写数据消费太慢队列产生大量数据堆积,因此需要建立一种针对HBASE高并发实时写数据的方法.
发明内容
本发明的目的就在于提供一种解决了高并发下对非关系型数据库实时写数据队列消费太慢产生大量数据堆积的问题,基于JAVA语言读写锁算法实现对HBASE无障碍写处理方法,通过JAVA语言生成读写锁算法,实时对HBASE无障碍写数据。
为了实现上述目的,本发明采用的技术方案是:一种基于读写锁算法对HBASE实时数据无障碍写处理方法:
(1)通过内部包禁止HBase合并、分裂;
(2)定义全局变量:缓冲列表List<Put>puts、表对应连接Map<String,HTableInterface>map、表对应缓冲数据Map<String,List<Put>>pMap、读写锁ReadWriteLockrwl;
所述缓冲列表puts作为客户端写处理缓冲池,前提是获得写入锁即可无限制写入;表对应连接map作为读处理操作相应缓冲数据pMap提交到HBASE服务器;读写锁rwl作为写处理加写入锁,读处理加读取锁控制。
变量声明还包括一些默认表名tableName、表连接htable、HBASE库连接conn等等。
(3)构造器:初始化表连接,初始化库连接conn,判断map中默认表连接是否存在,不存在则获取htable连接,并添加到表对应连接map<tableName,htable>中
(4)写处理:写数据时(即放数据)加写入锁,将数据存放到client缓冲列表中,完成释放写入锁;
获取写入锁,向缓冲列表中无障碍写数据,再释放写入锁;若当HBASE正在提交缓冲中数据时则处于读取锁状态不可写,等待读取锁释放后,获得写入锁再向缓冲中无障碍写数据,再释放写入锁。
(5)读处理:读数据时(即提交数据到HBASE服务器)加读取锁,提交数据到HBASE服务器端,完成释放读取锁;
即将表对应缓冲数据pMap中缓冲列表puts数据提交到HBASE服务器端的操作。获取读取锁,当表对应缓冲数据pMap存在记录时,通过map获取该表连接,再flushCommits相应的缓冲列表变量puts,接着清空对应的缓冲列表变量puts、表对应缓冲数据pMap,再释放读取锁;
(6)启动线程,每隔1秒执行一次读处理。
作为优选,在空闲时运行定时任务手动将region进行合并分裂;定义全局变量缓冲列表puts、表对应连接map、表对应缓冲数据pMap、读写锁rwl;构造器初始化表连接。
作为优选,步骤1中,设置hbase默认不执行合并、region分裂块大小足够大。
作为优选,步骤4、步骤5中,采用JAVA编程语言中读写锁算法,实现对HBASE实时数据无障碍的写处理。
作为优选,还能根据多线程队列消费者数据进行多线程同时作业
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川长虹电器股份有限公司,未经四川长虹电器股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710765083.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种嵌入式教学系统控制方法及装置
- 下一篇:消息提示方法、装置及终端