CN110334105B - 一种基于Storm的流数据异常检测方法 - Google Patents
一种基于Storm的流数据异常检测方法 Download PDFInfo
- Publication number
- CN110334105B CN110334105B CN201910628164.1A CN201910628164A CN110334105B CN 110334105 B CN110334105 B CN 110334105B CN 201910628164 A CN201910628164 A CN 201910628164A CN 110334105 B CN110334105 B CN 110334105B
- Authority
- CN
- China
- Prior art keywords
- data
- detection model
- detection
- storm
- initbolt
- 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
Images
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A10/00—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE at coastal zones; at river basins
- Y02A10/40—Controlling or monitoring, e.g. of flood or hurricane; Forecasting, e.g. risk assessment or mapping
Abstract
本发明公开了一种基于Storm的流数据异常检测方法,包括四个步骤:数据预处理;构建初始探测模型;利用探测模型对实时数据进行异常评价;根据特定条件在线更新探测模型。本发明实施例提供的技术方案,利用Storm流式处理框架,结合孤立森林算法进行异常检测,并通过消息中间件Kafka提高算法在流数据高吞吐量下的容忍度,有效解决了大数据环境下无法实时高效地对流数据进行异常检测的问题。
Description
技术领域
本发明涉及数据挖掘技术领域,具体涉及一种基于Storm的流数据异常检测方法。
背景技术
异常检测作为数据挖掘的重要一环,其目的在于从获取的数据集中发现产生机制异常的数据对象。然而,随着物联网技术的快速发展,人们收集数据的能力越来越强,数据规模从GB开始,不断向TB和PB级发展,使得传统的基于内存的异常检测方法已难以满足大数据环境下对异常检测的要求。
当今社会,在网络监控、工业数据、入侵检测、网络安全等领域每时每刻都在产生流数据。不同于静态大数据,流数据通常指一组快速、大量、连续的数据序列,且这些数据的价值随着时间的流逝而降低。由于流数据自身不同于静态数据的特点,传统静态大数据处理平台Hadoop无法满足对流数据异常检测的实时性要求。
孤立森林算法针对异常数据“少而不同”的特点提出了一种基于隔离的方法,通过随机选择样本属性及值进行样本分割,从而将异常数据隔离。相对于基于距离、基于模型、基于密度等其他异常检测算法,孤立森林算法计算开销更低,具备线性的时间复杂度,但是传统的数据处理平台无法充分发挥其效力。因此,将孤立森林算法运行在流数据处理平台上,对于同步处理并检测实时到达的流数据是否存在异常有重要意义。
发明内容
本发明提供一种基于Storm的流数据异常检测方法,其技术方案如下:
一种基于Storm的流数据异常检测方法,用Storm启动一个拓扑,包括:
(a)BuildSpout、EvaSpout、ForestSpout,用于产生不同的数据源;
(b)InitBolt、TreeBolt、ForestBolt、EvaBolt、ResultBolt、SampleBolt、UpdateBolt,用于完成不同的数据处理任务;
方法包括以下步骤:
(1)数据预处理;
(2)构建初始探测模型;
(3)利用探测模型对实时数据进行异常评价;
(4)根据特定条件在线更新探测模型。
上述步骤(1)的数据预处理,具体步骤如下:
(1)由EvaSpout和ForestSpout接受原始数据形成数据源,将其发送到InitBolt进行数据预处理;
(2)InitBolt对数据进行特征选择,剔除与异常检测不相关的特征,并将数据转换成JSON数据格式,以便后续异常检测算法执行;
(3)InitBolt将预处理后的数据发送到TreeBolt、ForestBolt、EvaBolt、ResultBolt、SampleBolt、UpdateBolt中用于探测模型的构建或异常评价。
上述步骤(2)的构建初始探测模型,具体步骤如下:
(1)TreeBolt接收InitBolt预处理后的训练样本数据后,通过随机无放回抽样,为每棵隔离树构建训练样本集;
(2)TreeBolt设置多个Task,并行采用孤立森林算法构建t棵隔离树,并将结果发送到ForestBolt上;
(3)ForestBolt接收到所有隔离树后,合并所有隔离树得到初始探测模型并持久化到Redis数据库中。
上述步骤(3)的利用探测模型对实时数据进行异常评价,具体步骤如下:
(1)实时数据通过Kafka分发给EvaSpout产生数据源,并发送到InitBolt;
(2)ForestSpout定时从Redis中获取探测模型并发送到多个EvaBolt上;
(3)InitBolt对数据进行预处理后,分发到多个EvaBolt上;
(4)EvaBolt通过遍历探测模型来计算检测数据的平均路径长度,从而对检测数据进行异常评价,并将评价得分发送到ResultBolt;
(5)ResultBolt根据检测数据的评价得分判断数据是否异常。
上述步骤(4)的根据特定条件在线更新探测模型,具体步骤如下:
(1)ResultBolt通过随机采样算法采集样本发送到SampleBolt用于更新探测模型;
(2)SampleBolt创建一个缓冲区存放样本数据,并根据预先定义好的规则计算缓冲区的样本异常率,当异常率超过了预定的阈值或样本数据累积到一定数量后,执行探测模型的更新,将样本数据发送到TreeBolt;
(3)TreeBolt利用样本数据构建成k棵隔离树后发送到UpdateBolt,同时,ForestSpout从Redis中获取现有的探测模型并发送到UpdateBolt;
(4)UpdateBolt将接收到的新的隔离树替换旧的探测模型中最旧的k棵隔离树,然后生成新的探测模型,发送到Redis中替换掉原有的探测模型。
本发明具有以下有益效果:本发明基于Storm的流数据异常处理算法,提出了一种针对流数据的实时异常检测技术,解决了传统异常检测算法无法处理大数据和静态大数据平台无法满足实时性要求的问题。
附图说明
图1是本发明所提出的基于Storm的流数据异常检测方法框架流程示意图;
图2是流数据异常检测在Storm平台上的拓扑图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的具体实施方式进行更加详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1是本发明所提出的基于Storm的流数据异常检测方法框架流程示意图,基于Storm的流数据异常检测算法,利用Storm启动一个拓扑,包括:
(1)BuildSpout、EvaSpout、ForestSpout,用于产生不同的数据源;
(2)InitBolt、TreeBolt、ForestBolt、EvaBolt、ResultBolt、SampleBolt、UpdateBolt,
用于完成不同的数据处理任务。
具体包括以下步骤:
(1)数据预处理;
(2)构建初始探测模型;
(3)利用探测模型对实时数据进行异常评价;
(4)根据特定条件在线更新探测模型。
所述数据预处理,具体步骤如下:
(1)由EvaSpout和ForestSpout接受原始数据形成数据源,将其发送到InitBolt进行数据预处理;
(2)InitBolt对数据进行特征选择,剔除与异常检测不相关的特征,例如数据集中包含的设备名、采集时间等特征。并将数据转换成JSON数据格式,以便后续异常检测算法执行;
(3)InitBolt将预处理后的数据发送到其他Bolt中用于探测模型的构建或异常评价。
图2所示为流数据异常检测在Storm平台上的拓扑图,主要分为构建初始探测模型、评价和更新三个模块。构建初始探测模型模块负责利用训练样本构建初始探测模型,评价模块负责利用探测模型对实时数据进行异常评价,更新模块负责根据特定条件在线更新探测模型。
所述构建初始探测模型模块,具体流程如下:
(1)由BuildSpout产生训练样本数据流并分配给InitBolt进行预处理后发送到TreeBolt。
(2)TreeBolt接收InitBolt预处理后的训练样本数据后,通过随机无放回抽样,为每棵隔离树构建训练样本集;
(3)TreeBolt设置多个Task,并行采用孤立森林算法构建t棵隔离树,并将结果发送到ForestBolt上;
具体构建隔离树的方法为:在每棵隔离树训练样本中,随机选择一个属性,并在这个属性的所有值范围内(最小值与最大值之间)随机选择一个值,对样本进行二次划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边,得到一个分裂条件和左、右两边的数据集,再分别在左右两面的数据集上重复上面的过程,直到达到终止条件。终止条件有两个:
(a)数据集只有一个样本或这多个一样的样本;
(b)树的高度达到了限定的深度。
基于训练样本构建隔离树的算法描述如下表1:
表1
(4)ForestBolt接收到所有隔离树后,合并所有隔离树得到初始探测模型并持久化到Redis中。
构建初始探测模型的算法描述如下表2:
表2
所述评价模块,具体流程如下:
(1)实时数据通过Kafka分发给EvaSpout产生数据源,并发送到InitBolt;
(2)ForestSpout定时从Redis中获取探测模型并发送到多个EvaBolt上;
(3)InitBolt对数据进行预处理后,分发到多个EvaBolt上;
(4)EvaBolt通过遍历探测模型来计算检测数据的平均路径长度,从而对检测数据进行异常评价,并将评价得分发送到ResultBolt;
(5)ResultBolt根据检测数据的评价得分判断数据是否异常。
EvaBolt接收到一个数据对象x后,将x遍历每棵隔离树,选择x所在隔离树T中某节点对应的一个特征F,当其特征F的特征值xq小于所在节点特征值xq时,将x划分到左子树,否则划分到右子树,并记录x当前距离所在T的根节点的路径长度e。重复以上步骤直到x被划分到一个叶子节点。计算检测数据路径长度的算法描述如下表3:
表3通过S(x,M)表示实例x在M个训练样本上的异常指数,S(x,n)计算公式如下:
c(M)=2H(M-1)-(2(M-1)/n) (公式3)
H(k)=ln(k)+0.5772156649(欧拉常数) (公式4)
其中,E(h(x))表示平均路径长度,hi(x)表示实例x在第i课隔离树上的路径长度,c(M)由M个训练样本构成的样本集的隔离树路径长度h(x)的期望值,即c(M)可用h(x)的平均值来代替,主要用于对h(x)进行正则化处理。H(M)是一个调和数,用欧拉常数进行估计。S(x,M)的取值范围为[0,1],越接近1表示是异常数据的可能性高,越接近0表示是正常数据的可能性高,如果大部分实例的S(x,M)都接近于0.5,说明整个数据集没有明显的异常值。
所述更新模块,具体流程如下:
(1)ResultBolt通过随机采样算法采集样本发送到SampleBolt用于更新探测模型;
(2)SampleBolt创建一个缓冲区存放样本数据,并根据预先定义好的规则计算缓冲区的样本异常率u′,当异常率超过了预定的阈值或样本数据累积到一定数量后,执行探测模型的更新,将样本数据发送到TreeBolt;
异常率u′的计算方法如下:
其中n表示当前缓冲区中异常样本的数量,nall表示当前缓冲区中所有样本的数量
(3)TreeBolt利用样本数据构建成k棵隔离树后发送到UpdateBolt,同时,ForestSpout从Redis中获取现有的探测模型并发送到UpdateBolt;
(4)UpdateBolt将接收到的新的隔离树替换旧的探测模型中最旧的k棵隔离树,然后生成新的探测模型,并发送到Redis中替换掉原有的探测模型。
执行探测模型更新算法描述如下表4:
表4
以上说明书中描述的只是本发明的具体实施方式,各种举例说明不对本发明的实质内容构成限制,对于在上述说明基础上做出其他不同形式的变化或变动,仍处于本发明的保护范围之中。
Claims (3)
1.一种基于Storm的流数据异常检测方法,其特征在于,用Storm启动一个拓扑,包括:
(a)BuildSpout、EvaSpout、ForestSpout,用于产生不同的数据源;
(b)InitBolt、TreeBolt、ForestBolt、EvaBolt、ResultBolt、SampleBolt、UpdateBolt,用于完成不同的数据处理任务;
所述方法包括以下步骤:
(1)数据预处理;
(2)构建初始探测模型;
所述步骤(2)的构建初始探测模型,具体步骤如下:
(2.1)TreeBolt接收InitBolt预处理后的训练样本数据后,通过随机无放回抽样,为每棵隔离树构建训练样本集;
(2.2)TreeBolt设置多个Task,并行采用孤立森林算法构建t棵隔离树,并将结果发送到ForestBolt上;
(2.3)ForestBolt接收到所有隔离树后,合并所有隔离树得到初始探测模型并持久化到Redis数据库中;
(3)利用探测模型对实时数据进行异常评价;
所述步骤(3)的利用探测模型对实时数据进行异常评价,具体步骤如下:
(3.1)实时数据通过Kafka分发给EvaSpout产生数据源,并发送到InitBolt;
(3.2)ForestSpout定时从Redis中获取探测模型并发送到多个EvaBolt上;
(3.3)InitBolt对数据进行预处理后,分发到多个EvaBolt上;
(3.4)EvaBolt通过遍历探测模型来计算检测数据的平均路径长度,从而对检测数据进行异常评价,并将评价得分发送到ResultBolt;
(3.5)ResultBolt根据检测数据的评价得分判断数据是否异常;
(4)根据特定条件在线更新探测模型。
2.根据权利要求1所述的一种基于Storm的流数据异常检测方法,其特征在于,所述步骤(1)的数据预处理,具体步骤如下:
(1.1)由EvaSpout和ForestSpout接受原始数据形成数据源,将其发送到InitBolt进行数据预处理;
(1.2)InitBolt对数据进行特征选择,剔除与异常检测不相关的特征,并将数据转换成JSON数据格式,以便后续异常检测算法执行;
(1.3)InitBolt将预处理后的数据发送到TreeBolt、ForestBolt、EvaBolt、ResultBolt、SampleBolt、UpdateBolt中用于探测模型的构建或异常评价。
3.根据权利要求1所述的一种基于Storm的流数据异常检测方法,其特征在于,所述步骤(4)的根据特定条件在线更新探测模型,具体步骤如下:
(4.1)ResultBolt通过随机采样算法采集样本发送到SampleBolt用于更新探测模型;
(4.2)SampleBolt创建一个缓冲区存放样本数据,并根据预先定义好的规则计算缓冲区的样本异常率,当异常率超过了预定的阈值或样本数据累积到一定数量后,执行探测模型的更新,将样本数据发送到TreeBolt;
(4.3)TreeBolt利用样本数据构建成k棵隔离树后发送到UpdateBolt,同时,ForestSpout从Redis中获取现有的探测模型并发送到UpdateBolt;
(4.4)UpdateBolt将接收到的新的隔离树替换旧的探测模型中最旧的k棵隔离树,然后生成新的探测模型,发送到Redis中替换掉原有的探测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910628164.1A CN110334105B (zh) | 2019-07-12 | 2019-07-12 | 一种基于Storm的流数据异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910628164.1A CN110334105B (zh) | 2019-07-12 | 2019-07-12 | 一种基于Storm的流数据异常检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110334105A CN110334105A (zh) | 2019-10-15 |
CN110334105B true CN110334105B (zh) | 2022-09-09 |
Family
ID=68146593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910628164.1A Active CN110334105B (zh) | 2019-07-12 | 2019-07-12 | 一种基于Storm的流数据异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110334105B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888850B (zh) * | 2019-12-04 | 2023-07-21 | 国网山东省电力公司威海供电公司 | 一种基于电力物联网平台的数据质量检测方法 |
CN111598438B (zh) * | 2020-05-14 | 2023-05-26 | 哈尔滨工业大学(威海) | 基于分段拟合分析及评估的民航发动机气路异常检测方法 |
CN111931834B (zh) * | 2020-07-31 | 2023-05-02 | 广东工业大学 | 基于孤立森林算法的铝型材挤压过程流数据异常检测方法、设备及存储介质 |
CN115688196B (zh) * | 2022-12-26 | 2023-07-18 | 萨科(深圳)科技有限公司 | 一种基于互联网平台订单大数据的在线数据处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649527B (zh) * | 2016-10-20 | 2021-02-09 | 重庆邮电大学 | 基于Spark Streaming的广告点击异常检测系统及检测方法 |
CN107657288B (zh) * | 2017-10-26 | 2020-07-03 | 国网冀北电力有限公司 | 一种基于孤立森林算法的电力调度流数据异常检测方法 |
-
2019
- 2019-07-12 CN CN201910628164.1A patent/CN110334105B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110334105A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110334105B (zh) | 一种基于Storm的流数据异常检测方法 | |
CN110213077B (zh) | 一种确定电力监控系统安全事件的方法、装置及系统 | |
CN112398779A (zh) | 一种网络流量数据分析方法及系统 | |
CN105471882A (zh) | 一种基于行为特征的网络攻击检测方法及装置 | |
CN107786388B (zh) | 一种基于大规模网络流数据的异常检测系统 | |
CN110460591B (zh) | 基于改进分层时间记忆网络的cdn流量异常检测装置及方法 | |
CN111309539A (zh) | 一种异常监测方法、装置和电子设备 | |
CN111008337B (zh) | 一种基于三元特征的深度注意力谣言鉴别方法及装置 | |
CN108230016B (zh) | 一种农产品市场价格传递分析方法及分析装置 | |
CN104660464B (zh) | 一种基于非广延熵的网络异常检测方法 | |
CN114124482B (zh) | 基于lof和孤立森林的访问流量异常检测方法及设备 | |
CN112217674B (zh) | 基于因果网络挖掘和图注意力网络的告警根因识别方法 | |
CN112636967A (zh) | 一种根因分析方法、装置、设备及存储介质 | |
CN110011990B (zh) | 内网安全威胁智能分析方法 | |
CN117041019B (zh) | 内容分发网络cdn的日志分析方法、装置及存储介质 | |
CN112738014A (zh) | 一种基于卷积时序网络的工控流量异常检测方法及系统 | |
CN110865625A (zh) | 一种基于时间序列的工艺数据异常检测方法 | |
CN108306997B (zh) | 域名解析监控方法及装置 | |
CN110175085A (zh) | 一种利用图分析的Hadoop系统异常原因诊断方法及装置 | |
CN112116078A (zh) | 一种基于人工智能的信息安全基线学习方法 | |
Ghalehgolabi et al. | Intrusion detection system using genetic algorithm and data mining techniques based on the reduction | |
CN111191720B (zh) | 一种业务场景的识别方法、装置及电子设备 | |
CN111600878A (zh) | 一种基于maf-adm的低速率拒绝服务攻击检测方法 | |
CN115473748B (zh) | 基于BiLSTM-ELM的DDoS攻击分类检测方法、装置及设备 | |
CN117336011A (zh) | 一种挖矿行为的检测方法、装置、电子设备和存储介质 |
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 |