CN104572903B - 一种Hbase数据库的控制数据入库的方法 - Google Patents
一种Hbase数据库的控制数据入库的方法 Download PDFInfo
- Publication number
- CN104572903B CN104572903B CN201410828075.9A CN201410828075A CN104572903B CN 104572903 B CN104572903 B CN 104572903B CN 201410828075 A CN201410828075 A CN 201410828075A CN 104572903 B CN104572903 B CN 104572903B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- memory
- list
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种Hbase数据库的控制数据入库的方法,通过将数据缓存在客户端,根据缓存的大小动态控制数据提交入库的速率,具体为:其客户端的堆压数据少时,客户端缓慢提交数据入库,当客户端的堆压数据多时,客户端高速提交入库,从而尽量保证集群性能平缓,避免某一时间发生热点问题造成集群同一时间需要处理的数据过多、集群反应过慢、甚至节点宕机的问题。这种Hbase数据库的控制数据入库的方法,将输送的数据缓存在客户端内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,当内存数据少时集群缓慢入库,当内存数据多时,集群高速入库。
Description
技术领域
本发明涉及计算机数据处理的技术领域,具体地涉及一种Hbase数据库的控制数据入库的方法。
背景技术
HBase是一个分布式的、面向列的开源数据库,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Google Bigtable的开源实现,类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
在数据写入Hbase数据库方面,现有的需求为:大量的车载终端会30秒采集一次数据,然后通过网络传输至Hbase数据库。现有的技术方案没有做任何处理,数据来了就直接向Hbase数据库写入,会造成集群负载不均衡。因为可能会出现大量的车载终端在一个相近的时间点发送数据,而某些时间点接收的数据却很少。这样会造成某一时间进来的数据超过集群的处理能力。由于无法均衡地使用集群的性能,某一时间发生热点问题造成集群同一时间需要处理的数据过多,超过集群的处理能力,从而导致集群反应过慢,甚至节点宕机。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种Hbase数据库的控制数据入库的方法,其当数据库的内存数据少时,集群将缓慢入库,当数据库的内存数据多时,集群将高速入库,从而尽量保证集群性能平缓,避免某一时间发生热点问题造成集群同一时间需要处理的数据过多、集群反应过慢、甚至节点宕机的问题。
本发明的技术解决方案是:这种Hbase数据库的控制数据入库的方法,将输送的数据缓存在客户端内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,当内存数据少时集群缓慢入库,当内存数据多时,集群高速入库。
本发明将输送的数据在数据库内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,这样当数据库的内存数据少时,集群将缓慢入库,当数据库的内存数据多时,集群将高速入库,从而尽量保证集群性能平缓,避免某一时间发生热点问题造成集群同一时间需要处理的数据过多、集群反应过慢、甚至节点宕机的问题。
附图说明
图1为根据本发明的Hbase数据库的控制数据入库的方法的一个优选实施例的示意图。
图2是根据本发明的Hbase数据库的控制数据入库的方法的流程图。
具体实施方式
如图1所示,这种Hbase数据库的控制数据入库的方法,将输送的数据缓存在客户端内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,当内存数据少时集群缓慢入库,当内存数据多时,集群高速入库。
本发明将输送的数据缓存在客户端内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,这样当客户端的内存数据少时,客户端缓慢提交数据入库,当客户端内存数据多时,客户端将高速提交数据入库,从而尽量保证集群性能平缓,避免某一时间发生热点问题造成集群同一时间需要处理的数据过多、集群反应过慢、甚至节点宕机的问题。
另外,如图2所示,该方法包括以下步骤:
(1)终端采集的数据放入内存中的list中,当前list写满就写下一个list;
(2)线程抓取写满的list中的数据;
(3)步骤(2)中的数据通过另一线程进行限速flush。
更进一步地,内存list过多,数据会写入硬盘。硬盘数据有单独线程进行处理。
另外,所述步骤(3)中限速是根据内存中list的数量来配置多个档,控制flush数据的速率。
另外,设定一个阀值,大于阀值之后将不进行限速入库,并且后续数据先存放在硬盘中等待内存占用减少后处理。一般来说集群性能足够的话是不会超过阀值。
本发明的主要内容就是设定了数据的平缓入库机制。主要将数据缓冲在内存中避免了某一时刻下大量数据同时入库的会发生的阻塞,保证了数据持续均衡入库。并通过内存缓冲机制,将数据阻塞在本机而不是服务器,保证向服务器均匀输出,避免regionserver宕机等问题。
本发明主要设定了通过内存中对象数量控制入库的速率。内存中会存在多个list对象。每次终端发送的数据通过控制中心分配至内存中的各个list对象.每个list对象固定大小(可配置),写满一个list就会写一个新的list同时定义了两个线程组A和B。线程组A内有多个线程(可配置),会去内存中根据存在时间读取存在时间最长的list,也就是最早的并且写满的list,未写满的会等待写满。读取到list后A中线程会从内存中清除这些list对象,并且给自身一个标记,标记内容为完成抓取状态。
线程组B内有多个线程,其和线程组A是一一对应的,每个线程内有HTable对象。B内的线程去寻找其对应的A中标记为完成抓取状态的线程,读取其中的数据。
线程组B也有一个特殊线程,其作用是判断内存中的list对象的个数,然后根据list个数的配置策略去加锁修改一个共享变量。线程组B中的线程都会读取这个共享变量,然后根据共享变量来控制自身入库数据的速率。
根据list个数的配置策略具体是,根据list个数将入库速率分为N个档位(N可配置),每个档位配置是当前list大于X小于Y(X,Y可配置)入库速率为每个线程每秒Z条(Z可配置)。
以上需要在配置文件中根据机器硬件性能情况配置各个档位参数。
另外档位配置还有一个超限阀值(可配置),当list个数超过这个阀值线程组B内线程的入库速率不限制,以最快速度写入数据。并且因大于这个阀值,将会导致内存不够,这里会将等量内存大小的后续终端数据写入硬盘中(此后再来的数据会继续写内存),并同时启动一个处理线程,专门处理硬盘数据。机制就是循环间隔一定时间(可配置)去判断内存list的个数,当小于阀值的时候将数据提交至内存交由线程组A和B来运作。
当硬盘数据一段时间(可配置)还未被处理掉,此时将这段数据标记为老硬盘数据,并会将后续等量内存大小的终端发送数据继续写入硬盘作为新硬盘数据,然后将以最大速率处理当前内存剩余数据以及老硬盘数据。
当两者都处理完成后,开放内存,并且此时并发的将新硬盘数据最大速率处理掉。
以下给出本发明的应用场景:
在网平台下有大量车辆,每个车辆终端每30秒会发送一次数据。此方案部署之后目前稳定运行。当前在网车辆约10万辆,预计此方案在服务器高配置的情况下可以处理在网500万辆车的业务需求。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
Claims (3)
1.一种Hbase数据库的控制数据入库的方法,其特征在于:将输送的数据缓存在客户端内存中的list对象,然后通过判断list对象的数量来控制数据入库的速率,当内存数据少时集群缓慢入库,当内存数据多时,集群高速入库;
具体包括:(1)终端采集的数据放入内存中的list中,当前list写满就写下一个list;(2)线程抓取写满的list中的数据;(3)步骤(2)中的数据通过另一线程进行限速flush。
2.根据权利要求1所述的Hbase数据库的控制数据入库的方法,其特征在于:所述步骤(3)中限速是根据内存中list的数量来配置多个档,控制flush数据的速率。
3.根据权利要求2所述的Hbase数据库的控制数据入库的方法,其特征在于:设定一个阀值,大于阀值之后将不进行限速入库,并且后续数据先存放在硬盘中等待内存占用减少后处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410828075.9A CN104572903B (zh) | 2014-12-26 | 2014-12-26 | 一种Hbase数据库的控制数据入库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410828075.9A CN104572903B (zh) | 2014-12-26 | 2014-12-26 | 一种Hbase数据库的控制数据入库的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572903A CN104572903A (zh) | 2015-04-29 |
CN104572903B true CN104572903B (zh) | 2019-02-01 |
Family
ID=53088965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410828075.9A Active CN104572903B (zh) | 2014-12-26 | 2014-12-26 | 一种Hbase数据库的控制数据入库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572903B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306173A (zh) * | 2015-11-17 | 2016-02-03 | 天泽信息产业股份有限公司 | 一种自适应的车联网终端接入方法 |
CN113220766A (zh) * | 2021-05-24 | 2021-08-06 | 成都四方伟业软件股份有限公司 | 一种基于Siddhi存储数据到Hbase的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
CN103945013A (zh) * | 2013-01-17 | 2014-07-23 | 方正宽带网络服务股份有限公司 | 数据传输接口装置和数据传输方法 |
CN104077420A (zh) * | 2014-07-21 | 2014-10-01 | 北京京东尚科信息技术有限公司 | 一种数据导入HBase数据库的方法和装置 |
CN104216963A (zh) * | 2014-08-22 | 2014-12-17 | 南京邮电大学 | 一种基于HBase的海量网管数据采集和存储方法 |
-
2014
- 2014-12-26 CN CN201410828075.9A patent/CN104572903B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103945013A (zh) * | 2013-01-17 | 2014-07-23 | 方正宽带网络服务股份有限公司 | 数据传输接口装置和数据传输方法 |
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
CN104077420A (zh) * | 2014-07-21 | 2014-10-01 | 北京京东尚科信息技术有限公司 | 一种数据导入HBase数据库的方法和装置 |
CN104216963A (zh) * | 2014-08-22 | 2014-12-17 | 南京邮电大学 | 一种基于HBase的海量网管数据采集和存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104572903A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868286B (zh) | 基于分布式文件系统小文件合并的并行追加方法及系统 | |
CN103914399B (zh) | 一种并行计算系统中的磁盘缓存方法及装置 | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN111324427B (zh) | 一种基于dsp的任务调度方法及装置 | |
EP2898430B1 (en) | Mail indexing and searching using hierarchical caches | |
US9465880B2 (en) | Optimizing storage in a publish / subscribe environment | |
US20180173638A1 (en) | Method and apparatus for data access | |
WO2014019349A1 (zh) | 一种文件合并方法和装置 | |
CN104657366B (zh) | 海量日志写入数据库的方法、装置和日志容灾系统 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及系统 | |
CN110462599A (zh) | 用于循环缓冲器的自主硬件管理的设备和方法 | |
CN103116627B (zh) | 一种高并发soa技术访问数据库的方法和系统 | |
CN103150149A (zh) | 处理数据库重做数据的方法和装置 | |
CN104699723A (zh) | 数据交换适配器、异构系统之间数据同步系统和方法 | |
CN104461551A (zh) | 基于数据并行处理的大数据处理系统 | |
US20120215992A1 (en) | Sorting | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
CN114327280B (zh) | 一种基于冷热分离存储的消息存储方法及系统 | |
CN103218176A (zh) | 数据处理方法及装置 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN104537003B (zh) | 一种Hbase数据库的通用高性能数据写入方法 | |
CN110109868A (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
CN104123237A (zh) | 海量小文件分级存储方法及系统 | |
CN104572903B (zh) | 一种Hbase数据库的控制数据入库的方法 | |
CN103927215B (zh) | 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |