CN105005585A - 一种日志数据的处理方法和装置 - Google Patents
一种日志数据的处理方法和装置 Download PDFInfo
- Publication number
- CN105005585A CN105005585A CN201510353811.4A CN201510353811A CN105005585A CN 105005585 A CN105005585 A CN 105005585A CN 201510353811 A CN201510353811 A CN 201510353811A CN 105005585 A CN105005585 A CN 105005585A
- Authority
- CN
- China
- Prior art keywords
- data
- event
- daily record
- data statistics
- statistics process
- 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.)
- Pending
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种日志数据的处理方法和装置。该处理方法,包括:接收用于统计的日志数据;将所述日志数据分割成多个数据片后分配给多个数据统计进程;每个数据统计进程各自生成数据片中事件的统计值;将每个数据统计进程生成的统计值根据对应的事件进行累加。通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值。在数据增加时具有良好的扩展性;数据分析过程中对存放数据的数据库产生影响非常小。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种日志数据的处理方法和装置。
背景技术
日志数据记录了系统中事件发生的情况,例如事件类型、事件发生的时间、事件所在的终端,事件类型例如系统崩溃、系统安装、系统卸载等。
一般而言都会对日志数据进行统计,但是现有技术中基本通过日志数据的数据库存储过程来分析数据,例如mysql。另外两种技术是Hadoop集群生态圈提供的数据分析方法和Mongo数据库的map reduce方式。
但是现有的处理方式中,存储过程跟不上数据增长速度,没有扩展性,只能单台服务器处理数据,到一定数据量后有性能瓶颈,处理复杂业务逻辑时会增加难度;Mongo的map reduce功能还不太完善,虽然可以实现分布式运算,可扩展,但分析过程中有部分阶段会锁住数据库,导致数据库停止响应,性能也不是非常好,不能充分利用内存和cpu,处理复杂业务逻辑时会增加难度;hadoop集群生态圈掌握起来有一定难度,需要一定知识积累,人力成本高,处理复杂业务逻辑时会增加难度。
发明内容
本发明提供了一种日志数据的处理方法和装置,其通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值,在数据增加时具有良好的扩展性,在数据分析过程中对存放数据的数据库产生影响非常小。
为实现上述设计,本发明采用以下技术方案:
一方面,采用一种日志数据的处理方法,包括:
接收用于统计的日志数据;
将所述日志数据分割成多个数据片后分配给多个数据统计进程;
每个数据统计进程各自生成数据片中事件的统计值;
将每个数据统计进程生成的统计值根据对应的事件进行累加。
其中,所述每个数据统计进程各自生成数据片中事件的统计值,具体为:
每个数据统计进程基于redis的setnx族函数生成数据片中目标事件事件去重复后的统计值。
其中,所述将所述日志数据分割成多个数据片后分配给多个数据统计进程,具体为:
将所述日志数据按时序分割成多个数据片后分配给位于一个或多个服务器中的一个或多个数据统计进程,一个数据统计进程包含多个线程。
其中,所述将每个数据统计进程生成的统计值根据对应的事件进行累加,具体为:
将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
其中,所述setnx族函数包括:msetnx函数、setnx函数和hsetnx函数。
另一方面,采用一种日志数据的处理装置,包括:
数据接收单元,用于接收用于统计的日志数据;
数据分割单元,用于将所述日志数据分割成多个数据片后分配给多个数据统计进程;
数据统计单元,用于每个数据统计进程各自生成数据片中事件的统计值;
数据累加单元,用于将每个数据统计进程生成的统计值根据对应的事件进行累加。
其中,所述数据统计单元,具体用于:
每个数据统计进程基于redis的setnx族函数生成数据片中目标事件事件去重复后的统计值。
其中,所述数据分割单元,具体用于:
将所述日志数据按时序分割成多个数据片后分配给位于一个或多个服务器中的一个或多个数据统计进程,一个数据统计进程包含多个线程。
其中,所述数据累加单元,具体用于:
将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
其中,所述setnx族函数包括:msetnx函数、setnx函数和hsetnx函数。
本发明的有益效果为:通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值,在数据增加时具有良好的扩展性,在数据分析过程中存放数据对数据库产生影响非常小。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明具体实施方式中提供的一种日志数据的处理方法的第一实施例的方法流程图。
图2是本发明具体实施方式中提供的一种日志数据的处理方法的第二实施例的方法流程图。
图3是本发明具体实施方式中提供的一种日志数据的处理装置的第一实施例的结构方框图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,其是本发明具体实施方式中提供的一种日志数据的处理方法的第一实施例的方法流程图。如图所示,该日志数据的处理方法,包括:
步骤S101:接收用于统计的日志数据。
步骤S102:将所述日志数据分割成多个数据片后分配给多个数据统计进程。
如果日志数据的数据量较小,对应的数据统计进程的个数较少;当日志数据的数据量持续增长时,可以通过增加部署数据统计进程的方式来扩展数据处理能力。
步骤S103:每个数据统计进程各自生成数据片中事件的统计值。
针对不同类型的数据,有不同的数据处理需求,例如故障率,需要统计所有故障发生的次数。对于用户数,只需要统计用户的“人数”,而不需要统计“人次”。
在统计过程中,对每个事件的统计结果的变更都在内存中运行,不用写入数据库,只有在每个数据统计进程分配的任务完成后,得到的最终结果才会写入数据库,减少了数据处理过程中对数据库的读写,缩短了整个数据分析所需的时间,提高了内存的利用率和工作效率。
步骤S104:将每个数据统计进程生成的统计值根据对应的事件进行累加。
在本方案中,优选搭建分布式数据库或分布式数据库集群,Mongo集群是优选方案,因为它是分布式数据库,能较方便存储和扩展数据,同时读写性能优异。数据统计进程部署到Mongo集群的每台分片服务器上;由每台分片服务器各自进行数据统计。最后再设置一台数据汇总服务器,由数据汇服务器上的合计程序把每台服务器计算出的结果累加,产生最终的数据处理结果。
综上所述,通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值,在数据增加时具有良好的扩展性,在数据分析过程中对存放数据的数据库产生影响非常小。
请参考图2,其是本发明具体实施方式中提供的一种日志数据的处理方法的第二实施例的方法流程图。如图所示,该日志数据的处理方法,包括:
步骤S201:接收用于统计的日志数据。
步骤S202:将所述日志数据按时序分割成多个数据片后分配给位于至少两个服务器中的多个数据统计进程。
步骤S203:每个数据统计进程基于redis的setnx族函数生成数据片中目标事件事件去重复后的统计值。
每个数据分析程序利用redis的setnx族函数(例如msetnx函数、setnx函数和hsetnx函数)来对各种需要去重的数据进行去重(去重用于统计用户数,也就是UV)。
由于由于hsetnx或setnx是原子操作,在多线程环境下也能保证运算的正确性,所以数据分析程序采用多线程,对需要处理的数据(比如一天的日志数据)进行分割,而且当集群中各个数据分析程序同时存取redis服务器数据时也不会发生数据不正确的问题。n个数据统计进程中的一个数据统计进程只处理其中1/n数据,并且多个数据统计进程可以同时并行运算,这样做可以有效减少等待IO时间,同时充分利用cpu和内存,提高运算性能。
步骤S204:将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
为分析用户的使用习惯,按预设的时间段进行累加,获得用户的使用高峰,进一步可以选择性的进行消息推送。
综上所述,通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值,在数据增加时具有良好的扩展性,在数据分析过程中存放数据对数据库产生影响非常小;同时,通过在redis数据库中基于setnx族函数进行统计,在统计过程中直接去重,提高了数据处理的效率和处理结果的真实性。
以下是本发明具体实施方式中提供的一种日志数据的处理装置的实施例,处理装置的实施例基于上述的处理方法的实施例实现,在处理装置中未尽的描述,请参考前述处理方法的实施例。
请参考图3,其是本发明具体实施方式中提供的一种日志数据的处理装置的第一实施例的结构方框图。如图所示,该日志数据的处理装置,包括:
数据接收单元310,用于接收用于统计的日志数据;
数据分割单元320,用于将所述日志数据分割成多个数据片后分配给多个数据统计进程;
数据统计单元330,用于每个数据统计进程各自生成数据片中事件的统计值;
数据累加单元340,用于将每个数据统计进程生成的统计值根据对应的事件进行累加。
综上所述,上述各单元的系统运转,通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值。在数据增加时具有良好的扩展性;由于对日志数据库只有读取数据的操作,数据分析过程中对存放日志数据的数据库产生影响非常小。
以下是本发明具体实施方式中提供的一种日志数据的处理装置的第二实施例。该日志数据的处理装置包括:
数据接收单元310,用于接收用于统计的日志数据;
数据分割单元320,用于将所述日志数据分割成多个数据片后分配给多个数据统计进程;
数据统计单元330,用于每个数据统计进程各自生成数据片中事件的统计值;
数据累加单元340,用于将每个数据统计进程生成的统计值根据对应的事件进行累加。
其中,所述数据统计单元330,具体用于:
每个数据统计进程基于redis的setnx族函数生成数据片中目标事件事件去重复后的统计值。
其中,所述数据分割单元320,具体用于:
将所述日志数据按时序分割成多个数据片后分配给位于一个或多个服务器中的一个或多个数据统计进程,一个数据统计进程包含多个线程。
其中,所述数据累加单元340,具体用于:
将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
其中,所述setnx族函数包括:msetnx函数、setnx函数和hsetnx函数。
综上所述,上述各单元的协同运转,通过将日志数据分割成多个数据片进行统计,获得每个数据片中事件的统计值,再累加得到单个事件的统计值,在数据增加时具有良好的扩展性,在数据分析过程中对存放数据的数据库产生影响非常小;同时,通过在redis数据库中基于setnx族函数进行统计,在统计过程中直接去重,提高了数据处理的效率和处理结果的真实性。
举例说明本实施例中的数据处理的详细过程。
需求:统计每天有多少用户使用Xapk(某个手机上的应用)。
数据:现有以下若干条日志数据
事件1:甲用户5月1日10:20:30使用了Xapk
事件2:乙用户5月1日18:20:30使用了Xapk
事件3:甲用户5月1日21:20:30使用了Xapk
事件4:乙用户5月1日21:40:30使用了Xapk
期望结果:5月1日共有2个用户使用了Xapk(注意,不是4个用户,是2个用户)。
数据处理过程:
部署2个数据统计进程,A数据统计进程负责处理5月1日当天12:00:00之前的数据,B数据统计进程负责处理5月1日当天12:00:00及以后的数据。
A数据统计进程和B数据统计进程同时运行。A数据统计进程和B数据统计进程同时开始各自对自身分配的数据片进行处理。A数据统计进程调用setnx函数在redis数据库中保存甲用户信息;B数据统计进程调用setnx函数在redis数据库中保存甲用户信息和乙用户信息。
关于事件1,假设A数据统计进程先于B数据统计进程对事件3进行了保存操作,那么setnx函数返回1,表示保存成功,并且此时redis数据库中保存了甲用户的信息,这时A数据统计进程统计到的用户数是1,把这个数值保存到结果数据库。
关于事件2:B数据统计进程对事件2进行了保存操作,那么setnx函数返回1,表示保存成功,并且此时redis数据库中保存了乙用户的信息,这时B数据统计进程统计到的用户数是1。
关于事件3:B数据统计进程用setnx函数保存甲用户的信息时,函数返回0,表示甲用户的信息已经被保存,这时B数据统计进程统计到的用户数是1+0=1。
关于事件4:B数据统计进程用setnx函数保存乙用户的信息时,函数返回0,表示乙用户的信息已经被保存,这时B数据统计进程统计到的用户数是1+0=1,把这个数值保存到结果数据库。
最后由合计程序把A数据统计进程的计算结果和B数据统计进程的计算结果相加,得到最后的计算结果:5月1日共有2个用户使用了Xapk。
同理,每个数据统计进程利用这个原理可以把半天的数据再分割成若干小时,利用多线程来运算,一个数据统计进程处理一个小时甚至半个小时的数据。
如果数据量不是非常大(一般在20G/每日以下的数据量),本方案可以精简为一个数据统计进程(包含若干线程)完成数据分析和合计操作。如果数据量非常大,则可以部署多台服务器,每个服务器部署多个数据统计进程来完成数据分析操作。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
Claims (10)
1.一种日志数据的处理方法,其特征在于,包括:
接收用于统计的日志数据;
将所述日志数据分割成多个数据片后分配给多个数据统计进程;
每个数据统计进程各自生成数据片中事件的统计值;
将每个数据统计进程生成的统计值根据对应的事件进行累加。
2.根据权利要求1所述的处理方法,其特征在于,所述每个数据统计进程各自生成数据片中事件的统计值,具体为:
每个数据统计进程基于redis的setnx族函数生成数据片中目标事件去重复后的统计值。
3.根据权利要求1所述的处理方法,其特征在于,所述将所述日志数据分割成多个数据片后分配给多个数据统计进程,具体为:
将所述日志数据按时序分割成多个数据片后分配给位于一个或多个服务器中的一个或多个数据统计进程,一个数据统计进程包含多个线程。
4.根据权利要求1所述的处理方法,其特征在于,所述将每个数据统计进程生成的统计值根据对应的事件进行累加,具体为:
将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
5.根据权利要求2所述的处理方法,其特征在于,所述setnx族函数包括:msetnx函数、setnx函数和hsetnx函数。
6.一种日志数据的处理装置,其特征在于,包括:
数据接收单元,用于接收用于统计的日志数据;
数据分割单元,用于将所述日志数据分割成多个数据片后分配给多个数据统计进程;
数据统计单元,用于每个数据统计进程各自生成数据片中事件的统计值;
数据累加单元,用于将每个数据统计进程生成的统计值根据对应的事件进行累加。
7.根据权利要求6所述的处理装置,其特征在于,所述数据统计单元,具体用于:
每个数据统计进程基于redis的setnx族函数生成数据片中目标事件事件去重复后的统计值。
8.根据权利要求6所述的处理装置,其特征在于,所述数据分割单元,具体用于:
将所述日志数据按时序分割成多个数据片后分配给位于一个或多个服务器中的一个或多个数据统计进程,一个数据统计进程包含多个线程。
9.根据权利要求6所述的处理装置,其特征在于,所述数据累加单元,具体用于:
将每个数据统计进程生成的统计值根据对应的事件按预设的时间段进行累加。
10.根据权利要求7所述的处理装置,其特征在于,所述setnx族函数包括:msetnx函数、setnx函数和hsetnx函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353811.4A CN105005585A (zh) | 2015-06-24 | 2015-06-24 | 一种日志数据的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353811.4A CN105005585A (zh) | 2015-06-24 | 2015-06-24 | 一种日志数据的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105005585A true CN105005585A (zh) | 2015-10-28 |
Family
ID=54378261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510353811.4A Pending CN105005585A (zh) | 2015-06-24 | 2015-06-24 | 一种日志数据的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105005585A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106886417A (zh) * | 2017-03-09 | 2017-06-23 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘方法 |
CN106909598A (zh) * | 2016-07-01 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种保障计算数据一致性的处理方法、装置及系统 |
CN106970791A (zh) * | 2017-03-09 | 2017-07-21 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘系统 |
CN107341095A (zh) * | 2017-06-27 | 2017-11-10 | 北京优特捷信息技术有限公司 | 一种智能分析日志数据的方法及装置 |
CN107704594A (zh) * | 2017-10-13 | 2018-02-16 | 东南大学 | 基于SparkStreaming的电力系统日志数据实时处理方法 |
EP3223173A4 (en) * | 2015-11-06 | 2018-09-19 | Wangsu Science & Technology Co., Ltd. | Method and system for managing redis key-value |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103700010A (zh) * | 2013-12-30 | 2014-04-02 | 世纪禾光科技发展(北京)有限责任公司 | 一种商品轨迹系统及相关方法 |
-
2015
- 2015-06-24 CN CN201510353811.4A patent/CN105005585A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103700010A (zh) * | 2013-12-30 | 2014-04-02 | 世纪禾光科技发展(北京)有限责任公司 | 一种商品轨迹系统及相关方法 |
Non-Patent Citations (2)
Title |
---|
刘煜华: "基于MongoDB的分布式日志采集系统设计及实现", 《中国优秀硕士学位论文全文数据库》 * |
孙思源: "基于MongoDB的网站日志分析系统的设计与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3223173A4 (en) * | 2015-11-06 | 2018-09-19 | Wangsu Science & Technology Co., Ltd. | Method and system for managing redis key-value |
US10496685B2 (en) | 2015-11-06 | 2019-12-03 | Wangsu Science & Technology Co., Ltd. | Redis key management method and system |
CN106909598A (zh) * | 2016-07-01 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种保障计算数据一致性的处理方法、装置及系统 |
CN106886417A (zh) * | 2017-03-09 | 2017-06-23 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘方法 |
CN106970791A (zh) * | 2017-03-09 | 2017-07-21 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘系统 |
CN107341095A (zh) * | 2017-06-27 | 2017-11-10 | 北京优特捷信息技术有限公司 | 一种智能分析日志数据的方法及装置 |
CN107704594A (zh) * | 2017-10-13 | 2018-02-16 | 东南大学 | 基于SparkStreaming的电力系统日志数据实时处理方法 |
CN107704594B (zh) * | 2017-10-13 | 2021-02-09 | 东南大学 | 基于SparkStreaming的电力系统日志数据实时处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105005585A (zh) | 一种日志数据的处理方法和装置 | |
CN103838867A (zh) | 日志处理方法和装置 | |
CN110166282B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN105955807B (zh) | 一种任务处理系统及方法 | |
CN105468492A (zh) | 一种基于搜索引擎的数据监控方法和系统 | |
CN111459986A (zh) | 数据计算系统及方法 | |
CN106033324B (zh) | 一种数据存储的方法和装置 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN108900619B (zh) | 一种独立访客统计方法及装置 | |
CN112236760B (zh) | 一种图数据的更新方法、系统、计算机可读存储介质及设备 | |
CN103763343A (zh) | 一种业务访问处理方法及装置 | |
CN104915902A (zh) | 一种基于云平台的外卖在线派送实现方法 | |
CN103577251A (zh) | 基于事件的互联网计算处理系统及方法 | |
CN112182043A (zh) | 日志数据查询方法、装置、设备及存储介质 | |
CN105242873B (zh) | 云计算系统的性能数据的采集与存储方法及装置 | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN116680315A (zh) | 数据离线处理方法、装置、电子设备及存储介质 | |
CN113422808B (zh) | 物联网平台http信息推送方法、系统、装置及介质 | |
CN107193749B (zh) | 测试方法、装置及设备 | |
CN104811349A (zh) | 一种访问统计的方法和装置 | |
CN108664322A (zh) | 数据处理方法及系统 | |
CN104052778A (zh) | 分布式的话单统计方法、装置以及系统 | |
CN107748711B (zh) | 自动优化Storm并行度的方法、终端设备及存储介质 | |
CN109947713B (zh) | 一种日志的监控方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151028 |
|
RJ01 | Rejection of invention patent application after publication |