一种基于流数据处理的预警系统设计

2019-12-16 02:57王性国郝文静董建谢康杜佳颖
电脑知识与技术 2019年30期
关键词:数据处理预处理预警

王性国 郝文静 董建 谢康 杜佳颖

摘要:隨着大数据应用的深入,如何提高大数据应用的时效性,成为大数据工作中的关键。针对实时海量数据预警处置的问题,设计了一种基于流数据处理的预警系统,系统包含了数据预处理、预警规则设置、预警数据识别、预警数据存储等模块,系统中关键组件包括了分布式消息系统Kafka、分布式流式计算框架Storm。预警规则支持关键词匹配或正则表达式匹配两种方式。系统可广泛应用于实时性要求较高的各类预警处置系统。

关键词:流数据;预警规则;kafka;storm;预警系统

中图分类号:TP302.1 文献标识码:A

文章编号:1009-3044(2019)30-0069-05

1背景

随着信息技术的快速发展,不仅是互联网、移动互联网的数据正以指数级别的增长,其他社会各行业数据也呈现了高速增长的趋势,因此如何快速、有效的从海量数据中提炼出更有价值的信息成为大数据应用的关键。特别是在面向复杂业务需求,如智能分析、现场决策、个性化体验改进等业务场景时,对数据处理的实效性提出了更好的要求,大数据技术的战略意义不在于掌握庞大的数据信息,而是在于如何通过有效的处理方式将这些大量的数据进行有效的专业化处理。流式数据处理也正是基于这种场景诞生的,与以往数据处理方式不同,流计算是连续的、实时的、低延时的,因此流式数据处理特别适用于那些数据产生速度快、数据量大,同时需要对关键信息进行及时报警的业务场景。

传统的预警处置系统大多是对已经存储后的数据进行离线计算,常见的如基于机器学习模型进行预测或者是基于规则的判断模型,此类预警系统事先需要对数据进行清洗、入库,然后在此基础上进行离线计算,进而产生预警结果。此类预警系统在预警前需要做大量的清洗、入库、计算等相关工作,因此时效性相对较低,尤其是面向海量数时,本身数据存储已经占用了大量的时间及存储空间,同时基于海量数据的离线计算也需要消耗大量的时间。因此,在面向海量的更新速度较快的流数据时,传统的预警系统已经无法满足实际业务需要。基于此,本文设计了一种基于流式数据处理的预警系统,系统以当下最流行的Storm流计算框架、Kafka消息处理系统为基础,并结合HDFS、MongoDB分布式存储系统进行设计。系统设计的功能包括流数据的预处理、预警规则的配置、预警数据的识别、预警结果处置等功能。

2系统架构

由图1所示,系统逻辑框架分为四层,存储层、支撑层、服务层和用户层。

用户层给出系统主要角色,角色分为三种,分别为预警规则设置人员、预警结果处置人员及系统管理人员。其中预警规则设置人员负责设置相关的预警规则,具体包括熟悉数据字段含义、制定具体预警对比规则、检验规则是否正确、规则下发、规则维护等;预警结果处置人员负责对预警产生的数据进行人工校验,对结果数据进行分析,具体工作包括,校验预警结果的正确性,并对校验结果进行标注,根据不同干的业务场景,对于预警正确的数据进行处置;系统管理人员负责对系统中用户、角色和权限资源的信息进行维护和分配,也可以对数据库进行备份。

应用服务层给出系统主要功能模块,包括用户系统管理模块、预警规则设置模块、人工校验处置模块、规则管理模块、预警结果查询、预警结果综合分析及系统管理等6个模块。应用服务层通过开放相应的服务接口,提供对前端功能的支持。

技术支撑层给出系统开发过程中使用的相关工具,具体包括分布式、多副本的消息系统kafka、分布式存储系统HDFS、分布式应用程序协调服务框架Zookeeper、分布式流式数据处理框架storm。以上组件均按照分布式集群方式进行部署,以及对原始数据处理应用程序及基于流式数据的在线识别算法。

数据存储层给出系统中用到的数据,主要包括原始数据存储、中间结果数据、用户信息、预警规则及预警结果等存储。根据不同的数据形态,数据分别存储在HDFS、MongoDB、KafkaAz。

3系统工作流程

本系统的逻辑流程图如图2所示。由图可知,本系统的逻辑流程主要分为以下几个步骤:1)数据预处理(包括原始数据处理、数据写人kafka);2)预警规则设置;3)storm预警数据识别(包括storm数据处理、在线识别);4)预警结果(包括预警结果存储、预警结果处置、预警结果分析)等4个步骤。

3.1数据预处理

包括原始数据的采集,存储及数据清洗等相关工作。在这里数据采集与数据的预处理进行解耦,数据采集专注数据的获取与存储,数据预处理专注对获取的原始数据进行清洗。通过数据预处理,将原始数据转化为ison格式数据,并写人到kafka消息系统中。

3.2预警规则设置

根据元数据格式,设置不同的预警规则,实现对预处理后的流式数据得在线识别,并将命中规则的数据进行保存。预警规则支持基于字段的and,or等逻辑组合操作,支持自定义的正则表达式规则,支持多条子规则添加等多种预警方式。通过界面化的操作支持用户将预警规则在线填写并进行保存,同时提供对规则的查询、编辑、启动、停止等操作。

3.3storm预警数据识别

用户将设置好的预警规则进行下发,storm将根据收到的预警规则,进行任务分配。任务分配完毕后,storm启动任务对kafka中的消息进行实时处理,最终将命中规则数据推送给后台进行存储。

3.4预警结果

步骤3)中命中的数据存储在相应的数据库后,前端页面对预警结果数据进行展示,根据业务需要,预警结果处置人员首先判断预警信息的真伪,并根绝判断结果该数据进行标注f正确或者错误)。对于预警错误的数据,标注后数据会同步给预警规则设置人员,辅助其对规则进行优化;对于预警正确的数据,根据不同的业务场景,数据将分发给不同的业务人员进行处置。同时,管理人员可以根据预警结果以及可视化的展示等方式,对预警数据进行综合分析,以达到对全局业务的整体把控,提升管理和工作效率。

4系统功能设计

按照功能详细划分,基于流数据处理的预警系统的主要功能点包括:数据预处理、预警规则配置、预警数据识别、预警结果分析、数据存储、系统管理等6个部分。

4.1数据预处理

数据预处理模块主要包含了两个部分,分别是原始数据处理和数据写入kafka消息系统。

原始数据处理环节包含了两个环节:

1)数据的实时获取

获取途径包括远端服务器实时数据推送以及通过布控方式获取所需要的特定数据。

2)数据处理写入kafka

Kafka数据处理流程如下图所示:

相关定义:

Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker。

Topic:在向Kafka集群发布消息的过程中,每条消息都会对应一个名为Topic的类别。物理上属于不同主题消息会被单独存储,逻辑上同一主题消息可能存储在一个或多个Broker上,但用户只需指定消息的主题即可生产或使用数据,而无需关心数据的存储位置。

Partition:Partition是物理上的概念,每个Topic包含一个或多个Partition。

Producer:数据生产者,负责将消息发布到Kaika。

Consumer:消息消费者,向Kafka broker读取消息的客户端。

Consumer Group:每个Consumer属于一个特定的ConsumerGroup(可为每个Consumer指定group name,若不指定groupname则属于默认的group。

数据处理流程如下:

1)实时接收远端服务器推送进来的数据,或者是通过布控方式从其他系统获取的特定数据并缓存至本地。

2)启动扫描工作线程,轮询步骤1)中获取的缓存数据资源,将缓存的数据资源以流的形式分发到N个工作目录。

3)启动N个线程对步骤2)各个目录的数据进行预处理,将数据清洗处理后生成特定格式。

4)启动katka数据处理程序,创建Topic,将处理后的数据以消息的形式发布到kafka broker。Kafka集群包含多个消息代理服务器,由于每条消息都对应相应的Topic,因此可以使用不同的Topic来代表不同来源的数据。

5)消费者(consumer)通过kafka broker获取数据进行数据处理,一个主题的数据可以有多个消费者(Consumer),一个消费者也可以同时订阅多个主题的数据。当生产者发布消息到某个主题时,订阅了这个主题的消费者都可以接收到生成者写入的新消息。

6)重复步骤1)一步骤5)将获取的数据通过kafka以消息流的信息实时提供给后端的消费者进行计算。

4.2預警规则

预警规则模块包含的主要功能为预警规则的配置及规则的管理,预警规则的配置主要是通过storm的任务接口进行开发设计,将storm数据处理算法进行接口封装,通过与前端页面的互动,使得用户可以通过前端页面将预警算法相关参数进行配置。预警规则管理包括对规则的检索、编辑、删除、修改、启用、停用等。通过前端页面可以实时对预警任务进行启动或者停止。具体功能流程,如图5所示。

预警规则配置:每条预警规则描述了对不同类型和来源的数据进行预警。通过多条子规则的组合来描述一条规则,每条子则规则定义如何对一个字段进行匹配。子规则有相应的强度,强度为与表示数据必须匹配这条子规则,而强度为或的子规则只需匹配一条即可。配置预警规则时,首先需要完成整条规则的设置,包括指定规则用途和数据源,命中模式和是否对外发送。之后便可通过内容匹配,正则匹配,以及时间匹配对原始数据的各个字段制定不同的过滤子规则,同时也需为每个子规则设置相应的匹配强度。

具体实现流程如下:

1)新建预警任务,填写任务名称及任务描述;

2)选择需要预警的数据源,在数据预处理环节,数据在写人katka的过程中,需要对不同的类型的数据进行标识,增加来源标识字段;

3)配置预警规则,首先选择需要设置规则的字段,其次选择预警规则类型,类型主要包括基于内容匹配(and,or操作)和基于正则表达式的匹配两种方式;

4)重复步骤3),添加子规则;

5)执行预警规则。

4.3预警数据识别

预警数据识别模块主要是通过Storm来实现,在实际应用中,Storm一般采用集群化部署,Storm集群是由一个Master节点和多个Work节点组成,其中Master节点也被称为主节点,Work节点也称为工作节点。

Master节点运行名为Nimbus的后台程序,主要作用是在Storm集群内分发代码、同时为Work节点分配任务并监控任务的执行状态m。

Worker节点运行一个名为Supervisor的守护程序,它负责监视主节点分配的任务,即根据Nimbus分配的任务确定是启动还是停止工作进程。一个Worker节点上可以同时运行多个Worker进程。

Storm使用Zookeeper来作为分布式协调组件,同时作为元数据存储,负责Nimbus和多个Supervisor之间的所有协调工作。

预警数据识别具体实现流程如下:

1)提交Topology,即用户提交3.2节中设置的预警规则至Storm的Nimbus节点;

2)Nimbus节点将步骤1)中的任务进行切分,分成若干个Task,并将这些Task分配到不同的Supervisor,任务分配完毕后,将分配信息存储在Zookeeper中;

3)Supervisor节点读取Zookeeper上的任务信息,认领各自的任务,并将任务分配给所属的Task进行执行;

4)将步骤3)中的各任务执行的结果存储在数据库中。

4.4预警结果

预警结果模块主要提供了对预警结果的查询、处置及分析相关的功能。具体功能如下:

1)检索功能

在检索页面支持通过以业务方向方向、关键词、时间等维度对结果进行查询,并且对于错误信息提供编辑修改及删除功能,支持数据的批量导出、批量删除等操作。

2)预警结果处置

对于预警结果数据用户可以在此进行人工校验,校验正确的数据,标记为“正确”并自动保存,对于预警识别错误数据,标记为“错误”并自动保存。对于标记“正确”的数据,可以根据报警信息进行处置,对于识别错误信息,反馈给规则设置人员,用来提升识别方法的准确度。如在互联网违法网站预警识别中,可以将识别出来的违法网站及时通报并报相关机构进行及时处置。

3)预警结果分析

预警结果分析模块提供对预警数据可视化展示、统计分析等相关功能。通过统计分析,可以对高发的预警信息进行总结,辅助相关工作人员进行问题的发现及整改。如在互联网违法网站识别中,可以通过可视化的方式展示不同预警规则识别的准确率,帮助规则设置人员优化预警规则;通过预警结果的分析,可以对不同的类型的违法网站数量、活跃度进行整体摸排,对违法网站的用户访问的地域、时间等进行分析辅助相关机关对违法信息进行处置。

4.5数据存储设计

结构化存储的数据包括:原始数据、kafka流数据、用户信息、预警规则信息及预警结果。其中原始数据以文件的形式存储在磁盘上,通过程序实现自动处理。

1)预警结果存储

通过预警规则命中的数据,将通过storm实写入到后台数据库,预警结果数据采用mongdb进行存储

预警结果是指通过预警规则在流式数据中命中的数据,以违法网站预警结果为例,数据库的字段设置如表1所示:

2)用户信息

用户信息用户存储用户基本信息,数据存储在mongdb中,字段设置如表2所示。

3)预警规则

预警规则表用于存储预警规则,数据存储在mongdb数据库中,字段设置如表3所示:

4)流数据存储

流数据以消息的形式存储在kafka中,Kafka中的消息是以主题(Topic)为基本单位进行组织的,各个主题之间相互独立。在这里主题只是一个逻辑上的抽象概念,而在实际数据文件的存储中,Kafka中的消息存储在物理上是以一个或多个分区(Partition)构成,每个分区对应本地磁盘上的一个文件夹,分区数量可以在创建主题时指定,也可以在创建Topic后进行修改。

4.6系统管理设计

浏览器客户端通过Chrome浏览器对系统进行访问,具有权限的用户可以进行系统管理的操作,在该模块中,操作一方面可以进行用户管理、权限分配管理,三个功能管理模块与数据库交互完成相应操作;另一方面还可以进行数据备份操作,可以手动备份数据,可以设置自动备份,也可以进行数据库的清除。

系统管理模块中,首先系统操作人员登录到系统,然后选择操作類型,包括三种,分别为用户管理、权限分配管理和数据库备份操作,在用户管理中可以进行用户的添加、编辑和删除操作;在权限分配管理中,可以为一个角色分配其相应的功能页面;数据库备份中有三种备份操作可以执行,分别为数据手动备份、自动备份和数据库清除操作。

5结束语

随着大数据深入发展,数据的维度更多,来源更广,数据产生的速度越来越快,因此如何更好地利用大数据,提高大数据的时效性,成为大数据工作中重中之中。本文结合实际应用情况,提出了一种基于流式数据预警系统的设计方案,系统设计之初主要是应用于公安部门对用户访问违法网站的实时报警处置,系统统还可广泛应用于对时效性要求较高的业务场景,如应急处置系统、公安重点人员布控、安防等领域。在未来的研究中,将进一步加深对大数据流数据在预警处置中的理论及应用研究,并将结合具体业务场景,将本设计应用到实际业务中。

猜你喜欢
数据处理预处理预警
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
法国发布高温预警 严阵以待备战“史上最热周”
园林有害生物预警与可持续控制
基于预处理MUSIC算法的分布式阵列DOA估计
浅谈PLC在预处理生产线自动化改造中的应用
机载预警雷达对IFF 的干扰分析
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
络合萃取法预处理H酸废水
基于自适应预处理的改进CPF-GMRES算法