一种Hbase数据库的通用高性能数据写入方法技术

技术编号:11323449 阅读:143 留言:0更新日期:2015-04-22 12:04
本发明专利技术公开一种Hbase数据库的通用高性能数据写入方法,其能够避免了数据干扰和并发安全隐患,避免了因HTable数据写入速率慢的原因导致队列数据阻塞,保证了队列的数据可以持续不断的输出。这种Hbase数据库的通用高性能数据写入方法,使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,HTable对象数组均为此对象的局部变量;每份数据一一对应一个HTable对象数组;每份数据写入多个缓冲区中,然后HTable对象数组读取已经写好的缓冲区来进行入库操作;HTable对象数组写入数据的过程中对使用的缓冲区加上线程锁,未写入缓冲区的数据绕开加上线程锁的缓冲区而写一个新的缓冲区。

【技术实现步骤摘要】

本专利技术涉及计算机数据处理的
,具体地涉及,主要用于大数据写入Hbase数据库。
技术介绍
HBase是一个分布式的、面向列的开源数据库,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。在数据写入Hbase数据库方面,现有技术大多采用常见的生产者消费者模式,因生产消费线程之间抢夺同步锁,尤其在多线程下更为明显,这就严重影响了入库效率。还有的现有技术是使用Hbase数据库自带工具import功能进行数据导入,这样效率较低。并且现有技术在大量数据入库的情况下会阻塞Hbase的reg1nserver客户端,造成reg1nserver 宕机或者 zookeeper 超时。
技术实现思路
本专利技术的技术解决问题是:克服现有技术的不足,提供,其能够避免了数据干扰和并发安全隐患,避免了因HTable数据写入速率慢的原因导致队列数据阻塞,保证了队列的数据可以持续不断的输出。本专利技术的技术解决方案是:这种Hbase数据库的通用高性能数据写入方法,使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,HTable对象数组均为此对象的局部变量;每份数据一一对应一个HTable对象数组;每份数据写入一个缓冲区中,然后HTable对象数组读取已经写好的缓冲区来进行入库操作;HTable对象数组写入数据的过程中对使用的缓冲区加上线程锁,未写入缓冲区的数据绕开加上线程锁的缓冲区而写一个新的缓冲区。本专利技术使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,分发的多份数据的接受端(HTable对象数组)均为此对象的局部变量,这样保证了表级别的独立性,并且队列之间相互不干扰,保证了队列之间的独立性,避免了数据干扰和并发安全隐患;每份数据都--对应一个HTable对象数组,通过这些HTable对象数组来完成数据的写入,每份数据会写入一个缓冲区中,然后HTable对象数组去读取已经写好的缓冲区去进行入库操作,HTable写入数据的过程中会对使用的缓冲区加上线程锁,那么未写入缓冲区的数据就会绕开加锁的缓冲区,去写一个新的缓冲区,这样就避免了因HTable数据写入速率慢的原因导致队列数据阻塞,保证了队列的数据可以持续不断的输出。【附图说明】图1为根据本专利技术的Hbase数据库的通用高性能数据写入方法的一个优选实施例的示意图。图2为根据本专利技术的Hbase数据库的通用高性能数据写入方法的流程图。【具体实施方式】这种Hbase数据库的通用高性能数据写入方法,使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,HTable对象数组均为此对象的局部变量;每份数据--对应一个HTable对象数组;每份数据写入一个缓冲区中,然后HTable对象数组读取已经写好的缓冲区来进行入库操作;HTable对象数组写入数据的过程中对使用的缓冲区加上线程锁,未写入缓冲区的数据绕开加上线程锁的缓冲区而写一个新的缓冲区。本专利技术使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,分发的多份数据的接受端(HTable对象数组)均为此对象的局部变量,这样保证了表级别的独立性,并且队列之间相互不干扰,保证了队列之间的独立性,避免了数据干扰和并发安全隐患;每份数据都--对应一个HTable对象数组,通过这些HTable对象数组来完成数据的写入,每份数据会写入一个缓冲区中,然后HTable对象数组去读取已经写好的缓冲区去进行入库操作,HTable写入数据的过程中会对使用的缓冲区加上线程锁,那么未写入缓冲区的数据就会绕开加锁的缓冲区,去写一个新的缓冲区,这样就避免了因HTable数据写入速率慢的原因导致队列数据阻塞,保证了队列的数据可以持续不断的输出。另外,每个HTable对象数组有——对应的缓冲区池,HTable对象数组从缓冲区池中获取缓冲区对象,如果缓冲区用完则进行等待。这样能够有效地避免因缓冲区无限创建而造成的内存溢出。同时队列和缓冲区池是一一对应的,而不是所有队列共用一个总的缓冲区池,这样每个HTable对象数组之间的缓冲区池就独立的起来,减少了队列之间数据的并发和干扰。因为缓冲区的机制,这里如果数据量超大导致缓冲区用完,此时数据堵塞在本地,而不是阻塞在服务器上,本机阻塞数据均匀向服务器数据,保证服务器的负荷,避免reg1nserver出现宕机zookeeper超时等。另外,缓冲区池内缓冲区的个数以及大小由配置文件控制。另外,在DAO层的base类关联对应每个HTabIe对象数组,通过表名不同对应不同的HTable对象数组,DAO层的这个base类从对象池中获取,针对数据不同得到不同的base类,此类为依照表不同的单例模式.同表同对象,不同表得到不同的.因和HTable数组一一对应,即是同表数据进入相同的一组HTable数组,不同表数据进入不同的一组HTable 数组。另外,每一行数据具有顶层接口,定义每一行数据的类型。这样不论是什么数据来源的数据(如文件读取,代码生成,其他技术如redis分发而来的数据),只要将每行数据实现顶层接口成为一个对象就可调用后续数据写入程序,增加了通用性。另外,如图1-2所示,提供了具体的步骤:(I)每一行数据序列化成HBaseObject对象;[001当前第1页1 2 本文档来自技高网...
一种Hbase数据库的通用高性能数据写入方法

【技术保护点】
一种Hbase数据库的通用高性能数据写入方法,其特征在于:使用数据分发机制,平均分发多份数据,不同表的数据有不同的数据处理对象,HTable对象数组均为此对象的局部变量;每份数据一一对应一个HTable对象数组;每份数据写入多个缓冲区中,然后HTable对象数组读取已经写好的缓冲区来进行入库操作;HTable对象数组写入数据的过程中对使用的缓冲区加上线程锁,未写入缓冲区的数据绕开加上线程锁的缓冲区而写一个新的缓冲区。

【技术特征摘要】

【专利技术属性】
技术研发人员:曹宇
申请(专利权)人:北京中交兴路车联网科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1