基于SparkStreaming的电力系统日志数据实时处理方法与流程

文档序号:13736183阅读:226来源:国知局
基于SparkStreaming的电力系统日志数据实时处理方法与流程

本发明涉及一种电力系统日志数据实时处理方法,尤其涉及一种基于sparkstreaming的电力系统日志数据实时处理方法。



背景技术:

电力是现代化社会运转和发展的基础产业,电力系统的安全和稳定关系到人类社会生活的方方面面。电力调度自动化系统作为一种数据处理系统,其包含电力系统运行信息、分析决策工具和控制手段。电力调度自动化系统在运行过程中会产生状态、调试、错误等数据,这类数据统称为日志数据。日志数据作为电力系统运行信息的一种表现形式,对其进行快速、准确的分析,对于电力系统安全稳定运行具有重要的保障作用。

随着调度自动化系统规模的不断扩大,电力系统需要实时处理的日志数据量急剧增加。面对全网实时日志数据呈现出大数据量,增长迅速的特点,对其计算、分析、仿真以及优化等需求远远超过普通计算系统的承受能力,传统的日志管理手段已无法满足海量日志数据的管理和分析需求。早先的流式处理系统通过丢弃一部分输入数据流(例如分级卸载),选择具有鲜明特点的数据进行处理,或者通过灵活的增加额外的资源。但通常来说,丢弃数据不是一个很好的选择,很有可能丢弃的数据非常重要,因而影响结果的正确性;而且对于高吞吐率的实时数据流,预先的获取相关资源,这种代价是巨大的。

为了确定系统运行的趋势和模式、查明故障等,分析电力调度自动化系统的运行状态和轨迹,需要做到在线实时分析。受到磁盘性能的影响,日志数据未能及时处理导致数据丢失,必须借助内存的快速处理能力。同时,面对系统资源和状态的不断变化,处理系统要能够及时的做出调整,确保系统的处理时间达到最优。

针对以上问题,研究者们开始关注如何利用内存资源突破i/o瓶颈,提高数据吞吐率,加快数据的处理速度。apachespark就是其中脱颖而出的开源计算框架。spark基于内存的迭代计算框架能够在内存中多次操作特定数据集,实现大数据的快速分析处理。sparkstreaming作为其上层工具,提供基于间隔的实时处理功能。数据流划分成若干数据块的时间称为块间隔,若干数据块组合成一个批次的时间称为批间隔。这种方式能够很好的满足电力调度自动化系统对某个时间段内数据的实时处理需求。

一般情况下,如果sparkstreaming处理数据的并行度(一个批次中包含数据块的数量=批间隔/块间隔)越低,那么资源的开销和利用率将会越小,例如任务的创建、交互等。而大规模的并行计算将会导致大量的资源开销,同时伴随着极高的资源利用率。为了及时的了解电力调度自动化系统的运行状态和轨迹,实现电力系统健康状况定性到定量的分析转换,这就需要确保查询任务能够达到较低的资源开销和更高的资源利用率。为了权衡资源的开销和利用率,在面对不同的系统状态和资源变化时,处理的并行度需要及时调整。

近些年来,实时数据流的处理需求促进了分布式实时计算框架的发展。例如:文献“high-throughputrobustarchitectureforloganalysisanddatastreammining”采用apachestorm作为实时计算框架,接收实时数据然后进行分析。sparkstreaming作为spark的上层高级工具,与storm系统不同的是:sparkstreaming不是一条记录接着一条记录的处理数据流,而是按照时间间隔预先将数据流划分成多个时间段的批作业进行处理。storm是基于事件级别的实时计算框架,电力调度自动化系统更多的是对某个时间段内的数据流有状态批处理的计算分析。而且storm对于每条记录至少会处理一次,当节点从错误中恢复过来,记录会重新计算,这就不满足电力调度自动化系统安全可靠的需求。

通过动态调整批间隔或者动态调整数据块大小,确实能够保证在没有预先了解数据流状态和运行环境的情况下,系统可以稳定的运行。然而这些方式关注更多的在于数据的读写吞吐率和资源利用率。而且对于复杂计算,动态调整也未能选择更优的批间隔或数据块大小,导致处理时间越来越长,完全忽视了调度自动化系统快速处理的需求。



技术实现要素:

发明目的:针对以上问题,本发明提出一种基于sparkstreaming的电力系统日志数据实时处理方法。

技术方案:为实现本发明的目的,本发明所采用的技术方案是:一种基于sparkstreaming的电力系统日志数据实时处理方法,包括以下步骤:

(1)定义不同日志类别的统计模型;

(2)构建sparkstreaming块间隔与数据流处理时间的关系模型;

(3)动态调整块间隔,探寻最优块间隔。

进一步地,所述步骤(1)中,统计模型包括元素:数据集、结果集、分组条件、分组过滤器和规则动作。

进一步地,所述步骤(2)中,将数据流划分成若干数据块的时间,即块间隔;若干数据块组合成一个批次的时间,即批间隔。

关系模型构建步骤:

(1)分批模块将接收的数据流根据块间隔划分成独立的数据块;

(2)将一个批间隔时间内的数据块包裹成一个批次,进入批队列中排队等待被处理;

(3)一个批间隔时间内的所有块间隔的数据并行处理。

进一步地,所述步骤(3)中,给定批间隔,利用贪心算法,动态调整块间隔,探寻最优块间隔。

所述贪心算法步骤为:

(1)初始块间隔表示为β,调整步长为i;

(2)如果块间隔为β的批处理时间小于块间隔为β+i的批处理时间,则最优的块间隔在初始块间隔的左侧;如果块间隔为β的批处理时间小于块间隔为β-i的批处理时间,则最优的块间隔在初始块间隔的右侧;

(3)当探寻到最优块间隔的方向,继续循环探索,直到处理时间不能再次减小。

有益效果:本方法综合考虑电力系统日志数据的特点,面对系统资源和状态的不断变化,处理系统无需根据数据流的变化重新定义统计函数和模型,并能够快速及时的动态调整,从而达到较高的资源利用率和更短的处理时间。

附图说明

图1是块间隔示意图;

图2是块间隔对处理时间的影响曲线图。

具体实施方式

下面结合附图和实施例对本发明的技术方案作进一步的说明。

本发明针对现有的实时计算框架处理日志数据流存在的不足,综合考虑块间隔和数据流处理时间的关系,提出一种基于sparkstreaming的电力系统日志数据实时处理方法,旨在保证sparkstreaming块间隔能够随着系统资源和状态的不断变化而动态调整,加快实时数据流的处理速度,借此分析电力调度自动化系统的运行状态和轨迹,实现电力系统健康状况定性到定量的分析转换。

本发明首先针对全网日志数据流急剧增长,处理系统获取的日志数据的类别以及相关属性变化多样的问题,预先对不同的日志类别定义统计模型,从而降低处理系统预处理的时间;然后通过对处理系统块间隔和处理时间关系的分析,发现基于块间隔的动态调整能够有效地降低系统的处理时间;最后基于上述分析,设计了基于贪心算法的动态调整策略,及时探寻到最优的块间隔,加快日志数据流的处理速度,减少查询任务的处理时间。

基于sparkstreaming的电力系统日志数据实时处理方法,包括以下步骤:

步骤1:定义不同日志类别的统计模型,根据统计模型,快速实时分析;

当处理系统获取的日志数据的类别以及相关属性不断变化,预先针对不同日志类别处理分析时的各个字段,定义统计模型,降低处理系统预处理的时间。

统计模型描述的是在一个实时分析过程中,需要的各个元素的集合。按照结构化查询语言中select的语句格式,一个统计模型需要包含如下元素:

(1)数据集:相当于from和where子句。在数据集中,需要指明订阅的日志类别、统计的时间窗口等,对于属于某类别的日志数据如果需要进一步筛选,则支持基于布局元素的逻辑表达式。

(2)结果集:相当于select子句。在结果集中,需要指明当前分析过程中最终将产生的结果字段,主要包括布局元素和统计字段。统计字段支持多个的统计函数:count、sum、max、min、top(n)、assert。

(3)分组条件:相当于groupby子句。分组条件只能包含在结果集中定义的字段。

(4)分组过滤器:分组过滤器只能包含结果集中的统计字段,对于数字型的元素支持的操作符有:=、>、>=、<、<=、!=,字符型的元素支持的操作符有:equal、contain、beginwith、endwith。

(5)规则动作:根据结果集的内容匹配规则:入库、告警。入库是指将计算结果存储到外部系统中;告警是指为统计操作的结果设置一个阈值,当结果超出阈值时,发送告警信息。

分析目标与统计模型示例如表1所示:

表1

步骤2:构建sparkstreaming块间隔与数据流处理时间的关系模型;

分析sparkstreaming块间隔与数据流处理时间的关系,探寻使数据流处理时间达到最小的块间隔的条件。

如图1所示,图中的分批模块即为sparkstreaming的分批模块,其作用是将接收的数据流划分成多个批次,然后对每个批次分别处理。分批模块形成一个批次,需要两个重要的参数:块间隔和批间隔。数据流划分成若干数据块的时间称为块间隔,若干数据块组合成一个批次的时间称为批间隔。

因此,分批模块将接收到的数据流首先根据块间隔(块间隔<批间隔)划分成各个独立的数据块,然后经过一个批间隔的时间,这段时间内的所有的数据块会包裹成一个批次,最后这个批次进入批队列中排队等待被处理。

从中可以看出,批次的执行并行度是由批间隔/块间隔(batchinterval/blockinterval)决定,表示一个批次中数据块的个数。在同等资源分配下,如果处理的并行度越低,那么资源的开销和利用率将会越小,比如任务的创建、交互等;而大规模的并行计算则会导致大量的资源开销,同时伴随着极高的资源利用率。为了权衡资源的开销和利用率,在面对不同的系统状态和资源变化时,处理的并行度需要及时调整。了解电力调度自动化系统的运行状态和轨迹,实现电力系统健康状况定性到定量的分析转换,意味着批间隔需要保持相对恒定。因此,处理系统的执行并行度主要受到块间隔的影响。

根据以上分析,块间隔决定了处理系统的执行并行度,同时也就影响到系统的处理性能。如图2所示,reduce工作流的批间隔恒定在3秒,而join工作流的批间隔恒定在1秒,分别在2mb/s和4mb/s的数据流接收速率下,块间隔对处理时间的影响。可以看出,不同的数据流接收速率,得到的曲线近似于抛物线,那么使处理时间达到最小的最优块间隔就是抛物线的顶点。事实上,受到操作环境的变化以及噪音的干扰等,块间隔和处理时间的关系并非是真正意义上的抛物线。但有一点不用怀疑,最优的块间隔一定随着数据接收速率的变化而变化,因为数据接收速率越快,块间隔中的数据越多;数据接收速率越慢,块间隔中的数据越少,数据的多少将直接影响处理系统的处理时间。

基于以上观察,对于一个给定的批间隔,就可以通过调整块间隔的大小,使查询任务的处理时间达到最优。

步骤3:在日志数据流实时分析时,根据步骤2中的关系模型,利用sparkstreaming块间隔的动态调整,减少查询任务的处理时间。

根据数据流处理时间达到最小的块间隔的条件,通过贪心的方法,及时探寻到最优的块间隔;并且根据处理系统资源和状态的不断变化而动态调整,减少查询任务的处理时间。

本发明的优化目标是保证处理系统每处理完一个批次,下一批数据接收的块间隔已经决定好了。图2中可以看出,如果选定的初始块间隔过小或者过大,探索最优块间隔的时间将会很长。折中的方案则是选择块间隔/2作为初始的块间隔,而不用频繁的探索,然后通过逐渐增加或者减小块间隔,直到处理时间不能再次减小。

表2给出了计算下一个块间隔的算法。初始块间隔表示为β,调整步长为i,计算过程中,β则表示下一个块间隔。p1和p2表示前两个批次的处理时间。

基于贪心算法的动态调整策略如表2所示:

表2

计算过程主要包括两个部分:如果块间隔为β的批处理时间小于块间隔为β+i的批处理时间,则最优的块间隔在初始块间隔的左侧;如果块间隔为β的批处理时间小于块间隔为β-i的批处理时间,则最优的块间隔在初始块间隔的右侧。当探寻到最优块间隔的方向,继续循环探索,直到处理时间不能再次减小。

如果数据接收速率以及系统运行环境保持不变,那么最优的块间隔将保持稳定。但是当运行环境发生变化时,那么最优的块间隔将发生变化,此时正确的算法需要及时做出调整来适应最新的环境。然而从头开始将会延长收敛的时间,因此本发明选择运行环境变化前的块间隔作为初始块间隔,重新开始贪心调整。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1