CN109947729B - 一种实时数据分析方法及装置 - Google Patents

一种实时数据分析方法及装置 Download PDF

Info

Publication number
CN109947729B
CN109947729B CN201710582573.3A CN201710582573A CN109947729B CN 109947729 B CN109947729 B CN 109947729B CN 201710582573 A CN201710582573 A CN 201710582573A CN 109947729 B CN109947729 B CN 109947729B
Authority
CN
China
Prior art keywords
data
real
distributed cache
application program
computing system
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
Application number
CN201710582573.3A
Other languages
English (en)
Other versions
CN109947729A (zh
Inventor
张海斌
胡伦良
刘哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Potevio Information Technology Co Ltd
Original Assignee
Potevio Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Potevio Information Technology Co Ltd filed Critical Potevio Information Technology Co Ltd
Priority to CN201710582573.3A priority Critical patent/CN109947729B/zh
Publication of CN109947729A publication Critical patent/CN109947729A/zh
Application granted granted Critical
Publication of CN109947729B publication Critical patent/CN109947729B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种实时数据分析方法及装置。所述方法包括应用程序模块向分布式缓存系统发送检索请求包括数据标识;分布式缓存系统若在索引结构中查询到相对应的索引和数据,则发送给应用程序模块,其中数据包括真实数据和\或指针数据;若应用程序模块判定数据包括指针数据,则向Spark计算系统发送查询请求包括指针数据;若Spark计算系统没有找到相对应的真实数据,则向HDFS存储系统发送加载指令至少包括指针数据;HDFS存储系统将与指针数据相对应的真实数据发送给Spark计算系统;Spark计算系统将真实数据汇总后得到汇总数据,并发送给应用程序模块。本发明实施例使分析系统能够处理海量数据的同时又保证了计算效率,并满足实时在线计算。

Description

一种实时数据分析方法及装置
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种实时数据分析方法及装置。
背景技术
随着智能手机及智能设备的越来越普及和互联网技术的发展,使得后台数据分析系统每天都要会面对海量的业务数据,并需要对大量数据进行分析和计算。
在现在技术是主要采用的Hadoop离线分析系统架构,数据采集程序直接将数据保存到Hadoop分布式文件分离系统(Hadoop Distributed File System,HDFS);大数据计算通过MapReduce或者Spark架构完成;分析结果保存到RDBMS;应用程序模块通过检索RDBMS完成业务处理。另一种主要的计算模型为Storm流式大数据计算模型,计算体系中有spout和bolt两类组成单元,前者产生数据,后者处理或过滤数据;数据以类似水流的形式在大数据系统中有向流动;数据处理后,可以传递给下一个处理单元,也可以进行持久化保存。
前者的Hadoop大数据分析模块为高数据量,离线分析计算的工具,无法完成在线实时分析,且基于RDBMS的处理系统,热点数据量不能过大。而后者Strom流式大数据计算无法完成单点数据分析计算。两者都无法满足如今大数据量实时分析的要求。
发明内容
本发明实施例提供一种实时数据分析方法及装置,用以解决现有技术没有合适的用实时计算的分析系统体系架构,且能保证计算效率和海量的数据处理能力。
第一方面,本发明提供了一种实时数据分析方法,包括:
应用程序模块向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;
所述分布式缓存系统根据检索请求,若在存储的索引结构中查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块,其中所述数据包括真实数据和\或指针数据;
若所述应用程序模块判定所述数据包括指针数据,则向Spark计算系统发送查询请求,其中所述查询请求至少包括所述指针数据;
若所述Spark计算系统没有找到与所述指针数据相对应的真实数据,则向HDFS存储系统发送加载指令,其中所述加载指令至少包括所述指针数据;
所述HDFS存储系统根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统;
所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块。
第二方面,本发明实施例提供了一种实时数据分析装置,包括:
应用程序模块,用于向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;
所述分布式缓存与所述应用程序模块和Spark计算系统相连,用于根据检索请求,在存储的索引结构查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块,其中所述数据包括真实数据和\或指针数据;
所述应用程序模块还用于,若判定所述数据包括指针数据,则向所述Spark计算系统发送查询请求,其中所述查询请求至少包括所述指针数据;
所述Spark计算系统与所述应用程序模块和HDFS存储系统相连,用于若没有找到与所述指针数据相对应的真实数据,则向所述HDFS存储系统发送加载指令,其中所述加载指令至少包括所述指针数据;
所述HDFS存储系统,用于根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统;
所述Spark计算系统,还用于将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块。
第三方面,本发明实施例还提供了一种电子设备,包括:
处理器、存储器、通信接口和总线;其中,
所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述通信接口用于该电子设备与显示装置的通信设备之间的信息传输;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:
对数据进行检索;构建索引结构;序列化/反序列化所述索引结构。
第四方面,本发明实施例还提供了一种计算机程序,包括程序代码,所述程序代码用于执行如下操作:
所述处理器用于调用所述存储器中的逻辑指令,以执行如下方法:
对数据进行检索;构建索引结构;序列化/反序列化所述索引结构。
第五方面,本发明实施例还提供了一种存储介质,用于存储如前所述的计算机程序。
本发明实施例提供的实时数据分析方法及装置,通过设置分布式缓存系统、Spark计算系统和HDFS存储系统的三级分布式存储架构,使分析系统能够处理海量数据的同时,又保证了计算效率,同时满足实时在线计算。
附图说明
图1为本发明实施例的实时数据分析方法流程图;
图2为本发明实施例的分布式缓存索引结构示意图;
图3为本发明实施例的序列化索引结构示意图;
图4为本发明实施例的实时数据分析装置结构示意图;
图5为本发明实施例的电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的实时数据分析方法流程图,图2为本发明实施例的分布式缓存索引结构示意图,如图1所示,所述方法包括:
步骤S01、应用程序模块向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;
当应用程序模块想要获取数据时就会先向分布式缓存系统发送检索请求,在这个检索请求中至少包括有与想要获取数据相对应的数据标识,例如,时间、地点,以及其它一些相关的个人信息、动作等,例如,籍贯北京、银行取钱和跑步等。
步骤S02、所述分布式缓存系统根据检索请求,若在存储的索引结构中查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块,其中所述数据包括真实数据和\或指针数据;
所述分布式缓存系统在收到检索请求后,会先提取出检索请求中的数据标识,然后将数据标识与存储的索引结构中的索引和数据进行对比,看是否能找与所述数据标识相匹配的索引和数据。
分布式缓存系统中的索引结构分为索引和数据两个部分,其中索引为树形结构,如图2所示,其具体的结构可以为M阶B-树,其中索引以数据产生的时间来建立,树形结构的根结点为日期,例如2017-05-01,根节点下面根据数据产生的小时、分钟、秒再分成数阶子节点,最后再根据数据发生的地点形成叶节点,然后在叶节点记录下具体的数据,其中所述数据包括地点、关键字和数据内容等,其中所述的数据内容可以为真实数据和\或指针数据。对于索引结构,以及其中各个节点的构建可以根据实际数据的类型和数据量来决定,本实施例只给出如图2所示的一种方案,并不作具体的限定,但为了表述方便在下面的实施例中,都以此方案建构索引结构。
根据分布式缓存系统中保存的索引结构,在与所述检索请求的比对中,会先根据检索请求中的时间来判断数据产生时间是否已经存在于索引结构中,然后再来判断具体保存的数据与应用程序模块想要得到的数据是否匹配。如果所述分布式缓存系统找到了匹配的数据,则要将与检索请求相对应的索引和数据都发送给所述应用程序模块。
步骤S03、若所述应用程序模块判定所述数据包括指针数据,则向Spark计算系统发送查询请求,其中所述查询请求至少包括所述指针数据;
所述应用程序模块在收到由分布式缓存系统发送来的检索结果后,会对检索结果中的数据进行判断,所述数据为指针数据还是真实数据。如果所述数据为真实数据,也就是应用程序模块想要得到的数据,则本次检索成功并结束。而如果所述数据中包括有指针数据,其中所述的指针数据为存储在其它空间的非结构化的文本、视频、语音和图片信息等,此时所述应用程序模块就会向Spark计算系统发送查询请求,其中所述的查询请求中至少包括所述指针数据。
步骤S04、若所述Spark计算系统没有找到与所述指针数据相对应的真实数据,则向HDFS存储系统发送加载指令,其中所述加载指令至少包括所述指针数据;
当所述Spark计算系统在接到所述应用程序模块发送的查询请求后,会先对所述查询请求进行解析以提取出其中的指针数据,并将所述指针数据与保存在Spark计算系统缓存中的真实数据进行比较,如果找到了与所述指针数据相匹配的真实数据,则直接将所述真实数据发送给应用程序模块,以使应用程序模块结束此次查询请求。
其中在Spark计算系统缓存中保存的真实数据为热点数据,即为应用程序模块经常需要调取的数据,具体热点数据的设定由实际使用情况来判定并进行预设。所以为了提高数据的查询效率并节省分布式缓存系统中的存储空间,所述热点数据会被保存在Spark计算系统的缓存中以方便应用程序模块查询。
而如果在Spark计算系统缓存中没有找到与所述指针数据相匹配的真实数据,那就需要所述Spark计算系统调用相应的加载指令发送给HDFS存储系统,其中所述的加载指令具体为RDD加载指令,至少包括所述指针数据。
步骤S05、所述HDFS存储系统根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统;
所述HDFS存储系统通过对所述加载指令的分析找到与所述指针数据相对应的真实数据,并将所述真实数据发送给Spark计算系统。
步骤S06、所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块。
所述Spark计算系统将由所述HDFS存储系统发送过来的真实数据进行分布式运算,并将运算结果汇总,得到了汇总数据,最后将所述汇总数据发送给所述应用程序模块,以使所述应用程序模块结束此次查询请求。
本发明实施例通过分布式缓存系统、Spark计算系统和HDFS存储系统的三级分布式存储架构,使分析系统能够处理海量数据的同时,又保证了计算效率,同时满足实时在线计算。
基于上述实施例,进一步地,所述方法还包括:
若所述数据标识为实时汇总数据,则所述分布式缓存系统向Spark计算系统发送实时汇总指令;
所述Spark计算系统根据所述实时汇总指令,向所述HDFS存储系统发送所述加载指令。
在所述分布式缓存系统接到由应用程序模块发送的检索请求后,根据对其中数据标识的分析,若判定无法在索引结构中找到与所述数据标识相匹配的数据,且所述数据标识为实时汇总数据时,所述分布式缓存系统会向Spark计算系统发送实时汇总指令。当然所述分布式缓存系统也可以向所述应用程序模块回复实时请求,然后再由应用程序模块根据接收到的实时请求向所述Spark计算系统发送一个实时汇总指令。
所述Spark计算系统再根据接收到的实时汇总指令,向所述HDFS存储系统发送所述加载指令,以使所述HDFS存储系统根据所述加载指令将所需的真实数据发送给Spark计算系统进行分布式运算。
如果所述分布式缓存系统既无法在索引结构中找到与所述数据标识相匹配的数据,且判定所述数据标识也并非实时汇总数据,则向所述应用程序模块回复一个空集合。
本发明实施例的分布式缓存系统如果判定所述检索请求中的数据标识为实时汇总数据,则向Spark计算系统发送实时汇总指令,以使所述Spark计算系统对HDFS存储系统中的实时数据进行汇总计算再发给应用程序模块,从而使三级分布式存储架构能够满足对实时数据的处理。
基于上述实施例,进一步地,所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块,具体为,
所述Spark计算系统将接收到的所述真实数据汇总计算得到汇总数据和与所述真实数据相对应的新索引和新数据,并将所述汇总数据发送给所述应用程序模块和所述HDFS存储系统,同时将所述新索引和新数据发送给所述分布式缓存系统;
相应地,所述方法还包括:
所述分布式缓存系统存储根据所述新索引和新数据更新所述索引结构;
所述HDFS存储系统存储所述汇总数据。
Spark计算系统中根据触发方式的不同可以分为两种不同的加载指令,一种是定时触发加载,一种是实时触发加载,其中,定时触发加载为所述Spark计算系统根据自身时钟,每间隔一定的时间就向HDFS存储系统发送定时触发加载指令,以使HDFS存储系统根据定时触发加载指令将需要的真实数据发送给所述Spark计算系统,然后通过分布式计算从而得到汇总数据,再发送给所述应用程序模块;另一种实时触发加载则是如上所述,当所述应用程序模块无法在分布式缓存系统和Spark计算系统中找到匹配的数据或者应用程序模块想要得到的数据为实时汇总数据时,就会需要Spark计算系统向所述HDFS存储系统系统发出实时加载指令,然后对HDFS发送的真实数据进行分布式汇总运算,再发送给所述应用程序模块。
在所述Spark计算系统从HDFS存储系统采集真实数据的过程中,同时记录下与所述真实数据和得到的汇总数据相对应的新索引和新数据,然后将这些新索引和新数据发送给所述分布式缓存系统。所述分布式缓存系统会根据接收到的新索引和新数据来更新自身的索引结构,加入不存在的新索引和新数据。
当所述Spark计算系统得到所述汇总数据后,不但要将所述汇总数据发送给所述应用程序模块,同时还要将所述汇总数据发送给所述HDFS存储系统,以备下一次需要时调用。
本发明实施例中的Spark计算系统在进行分布式运算的过程中,需要将新生成的新索引和新数据发送给分布式缓存系统以更新所述索引结构,还要将得到的汇总数据存储于HDFS存储系统,以方便下次需要时进行调用。从而使分析系统能够在处理海量数据的同时,又保证了计算以及下次检索的效率。
图3为本发明实施例的序列化索引结构示意图,基于上述实施例,进一步地,所述方法还包括:
所述分布式缓存系统将所述索引结构由树形结构转化为线性结构后得到序列化索引结构,并发送给HDFS存储系统;
所述HDFS存储系统将接收到的序列化索引结构保存。
所述分布式缓存系统中保存的索引结构,由于缓存的不稳定性,保存的内容会因为断电或其它的原因带来丢失或错误。所以,就需要将所述索引结构保存到一个相对稳定的存储空间,例如HDFS存储系统。
如图3所示,为了让存储更为方便,分布式缓存系统会先将自身保存的树形索引结构转变为线性结构。也就是将如图2所示的索引结构转变为如图3所示的序列化索引结构,然后再将序列化索引结构发送给所述HDFS存储系统并加以保存。
保存的时间可以是每次分布式缓存系统更新索引结构之后,也可以设定一个时间间隔,每间隔一个固定长度的时间就将分布式缓存系统中的索引结构序列化,例如每小时或者每分钟,然后保存到所述HDFS存储系统中。
进一步地,所述方法还包括:
所述分布式缓存系统在重启后会向所述HDFS存储系统发送一个反序列化请求;
所述HDFS存储系统将所述序列化索引结构发送给所述分布式缓存系统;
所述分布式缓存系统将接收到的所述序列化索引结构由线性结构转化为树形结构得到所述索引结构并保存。
当所述分布式缓存系统因为断电或关机等原因清空了缓存后,在所述分布式缓存系统重启时,就会向所述HDFS存储系统发送一个反序列化请求。所述HDFS存储系统在接到所述反序列化请求后,就会将存储的序列化索引结构发送给所述分布式缓存系统。然后所述分布式缓存系统就会对接收到的序列化索引结构进行反序列化操作,也就是将序列化索引结构由如图3所求的线性结构转化为如图2所示的树形结构,并保存,从而恢复原有的索引结构。
本发明实施例通过将所述分布式缓存系统中的索引结构序列化并保存到所述HDFS存储系统中,再将HDFS存储系统中的序列化索引结构反序列化到所述分布式缓存系统中,从而保证了分布式缓存系统中索引结构的稳定,不易发生错误,进而提高了分析系统的检索效率。
基于上述实施例,进一步地,所述方法还包括:
所述分布式缓存系统根据预设的清理阈值,将保存时间达到或超过清理阈值的索引和数据进行删除。
为了进一步提高检索效率,且节省所述分布式缓存系统的存储空间,就需要对保存的数据进行定期清理。也就是在分布式缓存系统对数据进行保存时,还需要记录一个数据产生或者更新的时间,然后预设一个清理阈值,例如一周或两周。然后在每经过一个固定的时间,例如三天,根据当前所述分布式缓存系统中保存的数据的产生或者更新的时间得到数据的保存时间,再与清理阈值进行比对,如果达到或者超过所述清理阈值,就可以认为暂时不再需要这些数据,并同时进行清理,也就是在索引结构中删除对应的数据。
本发明实施例通过对所述分布式缓存系统中的索引结构进行定期清理,可以提高分析系统的检索效率,且节省所述分布式缓存系统的存储空间。
图4为本发明实施例的实时数据分析装置结构示意图,如图4所示,所述装置包括:应用程序模块11、分布式缓存系统12、Spark计算系统13和HDFS存储系统,其中
所述应用程序模块11用于向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;所述分布式缓存12与所述应用程序模块11和所述Spark计算系统13相连,用于根据检索请求,在存储的索引结构查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块11,其中所述数据包括真实数据和\或指针数据;所述应用程序模块11还用于若判定所述数据包括指针数据,则向所述Spark计算系统13发送查询请求,其中所述查询请求至少包括所述指针数据;所述Spark计算系统13与所述应用程序模块11和HDFS存储系统14相连,用于若没有找到与所述指针数据相对应的真实数据,则向所述HDFS存储系统14发送加载指令,其中所述加载指令至少包括所述指针数据;所述HDFS存储系统14用于根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统13;所述Spark计算系统13还用于将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块11。
具体地,当应用程序模块11想要获取数据时就会先向分布式缓存系统12发送检索请求,在这个检索请求中至少包括有与想要获取数据相对应的数据标识。
所述分布式缓存系统12在收到检索请求后,会先提取出检索请求中的数据标识,然后将数据标识与存储的索引结构中的索引和数据进行对比,看是否能找与所述数据标识相匹配的索引和数据。
分布式缓存系统12中的索引结构分为索引和数据两个部分,其中索引为树形结构。根据分布式缓存系统12中保存的索引结构,在与所述检索请求的比对中,会先根据检索请求中的时间来判断数据产生时间是否已经存在于索引结构中,然后再来判断具体保存的数据与应用程序模块11想要得到的数据是否匹配。如果所述分布式缓存系统12找到了匹配的数据,则要将与检索请求相对应的索引和数据都发送给所述应用程序模块11。
所述应用程序模块11在收到由分布式缓存系统发送来的检索结果后,会对检索结果中的数据进行判断。如果所述数据为真实数据,也就是应用程序模块11想要得到的数据,则本次检索成功并结束。而如果所述数据中包括有指针数据,此时所述应用程序模块11就会向Spark计算系统13发送查询请求,其中所述的查询请求中至少包括所述指针数据。
当所述Spark计算系统13在接到所述应用程序模块11发送的查询请求后,会先对所述查询请求进行解析以提取出其中的指针数据,并将所述指针数据与保存在Spark计算系统13缓存中的真实数据进行比较,如果找到了与所述指针数据相匹配的真实数据,则直接将所述真实数据发送给应用程序模块11,以使应用程序模块11结束此次查询请求。
而如果在Spark计算系统13缓存中没有找到与所述指针数据相匹配的真实数据,那就需要所述Spark计算系统13调用相应的加载指令发送给HDFS存储系统14,其中所述加载指令至少包括所述指针数据。
所述HDFS存储系统14通过对所述加载指令的分析找到与所述指针数据相对应的真实数据,并将所述真实数据发送给Spark计算系统13。
所述Spark计算系统13将由所述HDFS存储系统14发送过来的真实数据进行分布式运算,并将运算结果汇总,得到了汇总数据,最后将所述汇总数据发送给所述应用程序模块11,以使所述应用程序模块11结束此次查询请求。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例通过分布式缓存系统12、Spark计算系统13和HDFS存储系统14的三级分布式存储架构,使分析系统能够处理海量数据的同时,又保证了计算效率,同时满足实时在线计算。
基于上述实施例,进一步地,所述分布式缓存系统还用于若所述数据标识为实时汇总数据,则所述分布式缓存系统向Spark计算系统发送实时汇总指令;所述Spark计算系统还用于根据所述实时汇总指令,向所述HDFS存储系统发送所述加载指令。
在所述分布式缓存系统接到由应用程序模块发送的检索请求后,根据对其中数据标识的分析,若判定无法在索引结构中找到与所述数据标识相匹配的数据,且所述数据标识为实时汇总数据时,所述分布式缓存系统会向Spark计算系统发送实时汇总指令。当然所述分布式缓存系统也可以向所述应用程序模块回复实时请求,然后再由应用程序模块根据接收到的实时请求向所述Spark计算系统发送一个实时汇总指令。
所述Spark计算系统再根据接收到的实时汇总指令,向所述HDFS存储系统发送所述加载指令,以使所述HDFS存储系统根据所述加载指令将所需的真实数据发送给Spark计算系统进行分布式运算。
如果所述分布式缓存系统既无法在索引结构中找到与所述数据标识相匹配的数据,且判定所述数据标识也并非实时汇总数据,则向所述应用程序模块回复一个空集合。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例的分布式缓存系统如果判定所述检索请求中的数据标识为实时汇总数据,则向Spark计算系统发送实时汇总指令,以使所述Spark计算系统对HDFS存储系统中的实时数据进行汇总计算再发给应用程序模块,从而使三级分布式存储架构能够满足对实时数据的处理。
基于上述实施例,进一步地,所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块,具体为,
所述Spark计算系统将接收到的所述真实数据汇总计算得到汇总数据和与所述真实数据相对应的新索引和新数据,并将所述汇总数据发送给所述应用程序模块和所述HDFS存储系统,同时将所述新索引和新数据发送给所述分布式缓存系统;
相应地,所述方法还包括:
所述分布式缓存系统存储根据所述新索引和新数据更新所述索引结构;
所述HDFS存储系统存储所述汇总数据。
Spark计算系统中根据触发方式的不同可以分为两种不同的加载指令,一种是定时触发加载,一种是实时触发加载,其中,定时触发加载为所述Spark计算系统根据自身时钟,每间隔一定的时间就向HDFS存储系统发送定时触发加载指令,以使HDFS存储系统根据定时触发加载指令将需要的真实数据发送给所述Spark计算系统,然后通过分布式计算从而得到汇总数据,再发送给所述应用程序模块;另一种实时触发加载则是如上所述,当所述应用程序模块无法在分布式缓存系统和Spark计算系统中找到匹配的数据或者应用程序模块想要得到的数据为实时汇总数据时,就会需要Spark计算系统向所述HDFS存储系统系统发出实时加载指令,然后对HDFS发送的真实数据进行分布式汇总运算,再发送给所述应用程序模块。
在所述Spark计算系统从HDFS存储系统采集真实数据的过程中,同时记录下与所述真实数据和得到的汇总数据相对应的新索引和新数据,然后将这些新索引和新数据发送给所述分布式缓存系统。所述分布式缓存系统会根据接收到的新索引和新数据来更新自身的索引结构,加入不存在的新索引和新数据。
当所述Spark计算系统得到所述汇总数据后,不但要将所述汇总数据发送给所述应用程序模块,同时还要将所述汇总数据发送给所述HDFS存储系统,以备下一次需要时调用。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例中的Spark计算系统在进行分布式运算的过程中,需要将新生成的新索引和新数据发送给分布式缓存系统以更新所述索引结构,还要将得到的汇总数据存储于HDFS存储系统,以方便下次需要时进行调用。从而使分析系统能够在处理海量数据的同时,又保证了计算以及下次检索的效率。
基于上述实施例,进一步地,所述分布式缓存系统还用于将所述索引结构由树形结构转化为线性结构后得到序列化索引结构,并发送给HDFS存储系统;所述HDFS存储系统还用于将接收到的序列化索引结构保存。
所述分布式缓存系统中保存的索引结构,由于缓存的不稳定性,保存的内容会因为断电或其它的原因带来丢失或错误。所以,就需要将所述索引结构保存到一个相对稳定的存储空间,例如HDFS存储系统。
为了让存储更为方便,分布式缓存系统会先将自身保存的树形索引结构转变为线性的序列化索引结构,然后再将序列化索引结构发送给所述HDFS存储系统并加以保存。
保存的时间可以是每次分布式缓存系统更新索引结构之后,也可以设定一个时间间隔,每间隔一个固定长度的时间就将分布式缓存系统中的索引结构序列化,例如每小时或者每分钟,然后保存到所述HDFS存储系统中。
进一步地,所述分布式缓存系统还用于在重启后会向所述HDFS存储系统发送一个反序列化请求;所述HDFS存储系统还用于将所述序列化索引结构发送给所述分布式缓存系统;所述分布式缓存系统还用于将接收到的所述序列化索引结构由线性结构转化为树形结构得到所述索引结构并保存。
当所述分布式缓存系统因为断电或关机等原因清空了缓存后,在所述分布式缓存系统重启时,就会向所述HDFS存储系统发送一个反序列化请求。所述HDFS存储系统在接到所述反序列化请求后,就会将存储的序列化索引结构发送给所述分布式缓存系统。然后所述分布式缓存系统就会对接收到的序列化索引结构进行反序列化操作,也就是将序列化索引结构由线性结构转化为树形结构,并保存,从而恢复原有的索引结构。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例通过将所述分布式缓存系统中的索引结构序列化并保存到所述HDFS存储系统中,再将HDFS存储系统中的序列化索引结构反序列化到所述分布式缓存系统中,从而保证了分布式缓存系统中索引结构的稳定,不易发生错误,进而提高了分析系统的检索效率。
基于上述实施例,进一步地,所述分布式缓存系统还用于根据预设的清理阈值,将保存时间达到或超过清理阈值的索引和数据进行删除。
为了进一步提高检索效率,且节省所述分布式缓存系统的存储空间,就需要对保存的数据进行定期清理。也就是在分布式缓存系统对数据进行保存时,还需要记录一个数据产生或者更新的时间,然后预设一个清理阈值,例如一周或两周。然后在每经过一个固定的时间,例如三天,根据当前所述分布式缓存系统中保存的数据的产生或者更新的时间得到数据的保存时间,再与清理阈值进行比对,如果达到或者超过所述清理阈值,就可以认为暂时不再需要这些数据,并同时进行清理,也就是在索引结构中删除对应的数据。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例通过对所述分布式缓存系统中的索引结构进行定期清理,可以提高分析系统的检索效率,且节省所述分布式缓存系统的存储空间。
图5为本发明实施例的电子设备结构示意图。如图5所示,所述电子设备,包括:处理器(processor)601、存储器(memory)602和总线603;
其中,所述处理器601和所述存储器602通过所述总线603完成相互间的通信;
所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:对数据进行检索;构建索引结构;序列化/反序列化所述索引结构。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:对数据进行检索;构建索引结构;序列化/反序列化所述索引结构。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:对数据进行检索;构建索引结构;序列化/反序列化所述索引结构。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的显示装置的测试设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种实时数据分析方法,其特征在于,所述方法包括:
应用程序模块向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;
所述分布式缓存系统根据检索请求,若在存储的索引结构中查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块,其中所述数据包括真实数据和\或指针数据;
若所述应用程序模块判定所述数据包括指针数据,则向Spark计算系统发送查询请求,其中所述查询请求至少包括所述指针数据;
若所述Spark计算系统没有找到与所述指针数据相对应的真实数据,则向HDFS存储系统发送加载指令,其中所述加载指令至少包括所述指针数据;
所述HDFS存储系统根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统;
所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块;
其中,所述真实数据为应用程序模块需要获取的数据,所述指针数据为存储在分布式缓存系统以外的非结构化数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述数据标识为实时汇总数据,则所述分布式缓存系统向Spark计算系统发送实时汇总指令;
所述Spark计算系统根据所述实时汇总指令,向所述HDFS存储系统发送所述加载指令。
3.根据权利要求1所述的方法,其特征在于,所述Spark计算系统将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块,具体为,
所述Spark计算系统将接收到的所述真实数据汇总计算得到汇总数据和与所述真实数据相对应的新索引和新数据,并将所述汇总数据发送给所述应用程序模块和所述HDFS存储系统,同时将所述新索引和新数据发送给所述分布式缓存系统;
相应地,所述方法还包括:
所述分布式缓存系统存储根据所述新索引和新数据更新所述索引结构;
所述HDFS存储系统存储所述汇总数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述分布式缓存系统将所述索引结构由树形结构转化为线性结构后得到序列化索引结构,并发送给HDFS存储系统;
所述HDFS存储系统将接收到的序列化索引结构保存。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述分布式缓存系统在重启后会向所述HDFS存储系统发送一个反序列化请求;
所述HDFS存储系统将所述序列化索引结构发送给所述分布式缓存系统;
所述分布式缓存系统将接收到的所述序列化索引结构由线性结构转化为树形结构得到所述索引结构并保存。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述分布式缓存系统根据预设的清理阈值,将保存时间达到或超过清理阈值的索引和数据进行删除。
7.一种实时数据分析装置,其特征在于,所述装置包括:
应用程序模块,用于向分布式缓存系统发送检索请求,其中所述检索请求至少包括数据标识;
所述分布式缓存与所述应用程序模块和Spark计算系统相连,用于根据检索请求,在存储的索引结构查询到与所述数据标识相对应的索引和数据,则将所述索引和所述数据发送给应用程序模块,其中所述数据包括真实数据和\或指针数据;
所述应用程序模块还用于,若判定所述数据包括指针数据,则向所述Spark计算系统发送查询请求,其中所述查询请求至少包括所述指针数据;
所述Spark计算系统与所述应用程序模块和HDFS存储系统相连,用于若没有找到与所述指针数据相对应的真实数据,则向所述HDFS存储系统发送加载指令,其中所述加载指令至少包括所述指针数据;
所述HDFS存储系统,用于根据所述加载指令将与所述指针数据相对应的真实数据发送给所述Spark计算系统;
所述Spark计算系统,还用于将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块;
其中,所述真实数据为应用程序模块需要获取的数据,所述指针数据为存储在分布式缓存系统以外的非结构化数据。
8.根据权利要求7所述的装置,其特征在于,所述Spark计算系统,还用于将接收到的所述真实数据汇总计算后得到汇总数据,并发送给所述应用程序模块,具体为,
所述Spark计算系统,还用于将接收到的所述真实数据汇总计算得到汇总数据和与所述真实数据相对应的新索引和新数据,并将所述汇总数据发送给所述应用程序模块和所述HDFS存储系统,同时将所述新索引和新数据发送给所述分布式缓存系统;
相应地,所述分布式缓存系统还用于,存储根据所述新索引和新数据更新所述索引结构;
所述HDFS存储系统还用于,存储所述汇总数据。
9.一种电子设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一所述的方法。
CN201710582573.3A 2017-07-17 2017-07-17 一种实时数据分析方法及装置 Active CN109947729B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710582573.3A CN109947729B (zh) 2017-07-17 2017-07-17 一种实时数据分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710582573.3A CN109947729B (zh) 2017-07-17 2017-07-17 一种实时数据分析方法及装置

Publications (2)

Publication Number Publication Date
CN109947729A CN109947729A (zh) 2019-06-28
CN109947729B true CN109947729B (zh) 2021-08-03

Family

ID=67003942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710582573.3A Active CN109947729B (zh) 2017-07-17 2017-07-17 一种实时数据分析方法及装置

Country Status (1)

Country Link
CN (1) CN109947729B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026721A (zh) * 2019-11-12 2020-04-17 上海麦克风文化传媒有限公司 一种温数据存储方法
CN111026918A (zh) * 2019-11-12 2020-04-17 上海麦克风文化传媒有限公司 一种温数据大规模分析架构
CN112416925B (zh) * 2020-11-02 2024-04-09 浙商银行股份有限公司 基于有序分布式索引结构的查询方法和分布式数据库系统
CN112685335B (zh) * 2020-12-28 2022-07-15 湖南博匠信息科技有限公司 数据存储系统
CN113672583B (zh) * 2021-08-20 2023-03-28 浩鲸云计算科技股份有限公司 基于存储与计算分离的大数据多数据源分析方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104599032A (zh) * 2014-11-28 2015-05-06 国家电网公司 一种面向资源管理的分布式内存电网构建方法及系统
CN104794162B (zh) * 2015-03-25 2018-02-23 中国人民大学 实时数据存储与查询方法
US10740290B2 (en) * 2015-04-14 2020-08-11 Jetflow Technologies Systems and methods for key-value stores
CN106055655A (zh) * 2016-05-31 2016-10-26 广州艾媒数聚信息咨询股份有限公司 一种实时数据的存储方法及装置、访问方法及系统
CN106844539A (zh) * 2016-12-30 2017-06-13 曙光信息产业(北京)有限公司 实时数据分析方法及系统

Also Published As

Publication number Publication date
CN109947729A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
CN109947729B (zh) 一种实时数据分析方法及装置
CN109800222B (zh) 一种HBase二级索引自适应优化方法和系统
CN109034993B (zh) 对账方法、设备、系统及计算机可读存储介质
CN106980699B (zh) 一种数据处理平台和系统
US9507821B2 (en) Mail indexing and searching using hierarchical caches
EP2579167A1 (en) Method for active information push and server therefor
KR102311032B1 (ko) 데이터베이스 동기화
CN104584524A (zh) 聚合中介系统中的数据
CN109669925B (zh) 非结构化数据的管理方法及装置
CN110162522A (zh) 一种分布式数据搜索系统及方法
US10250550B2 (en) Social message monitoring method and apparatus
CN110837409A (zh) 一种定时执行任务的方法和系统
CN114741335A (zh) 缓存管理方法、装置、介质及设备
CN114398520A (zh) 数据检索方法、系统、装置、电子设备及存储介质
CN112052259A (zh) 数据处理方法、装置、设备及计算机存储介质
CN109101595B (zh) 一种信息查询方法、装置、设备及计算机可读存储介质
CN109213972B (zh) 确定文档相似度的方法、装置、设备和计算机存储介质
CN108805741B (zh) 一种电能质量数据的融合方法、装置及系统
CN111274316A (zh) 多级数据流转任务的执行方法及装置、电子设备、存储介质
CN112148712A (zh) 一种数据处理方法、装置、设备及介质
CN107180072B (zh) 一种时序数据的处理方法及装置
CN110297827A (zh) 一种集合Lucene和Hbase的电力数据检索系统
CN109739883A (zh) 提升数据查询性能的方法、装置和电子设备
CN113609130B (zh) 获取网关接入数据的方法、装置、电子设备及存储介质
US20240078221A1 (en) Systems and methods of modeling and querying dynamic temporal graph on massive parallel graph processing and storage engine

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant