2. 中国科学院 沈阳计算技术研究所, 沈阳 110168;
3. 中国科学院大学, 北京 100049;
4. 国家电网公司 东北电力调控分中心, 沈阳 110180
2. Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang Liaoning 110168, China;
3. University of Chinese Academy of Sciences, Beijing 100049, China;
4. Electric Power Control Northeast Branch Center, State Grid Corporation of China, Shenyang Liaoning 110180, China
对于电网企业运营状态的描述, 通常需要对企业的众多业务领域中各维度的数据进行全流程的监测分析, 从而实时、精准地获得企业当前的业务情况[1]。现如今, 电网运营监控中心的建设正朝着规模化、集中化、统一化、自动化的趋势发展, 如何对包含上千万用户的各个业务系统中的数据进行集成, 高效处理分析每小时产生的多达上百GB的数据,成为提高运营监测水平的关键问题。同时, 传统依靠专家经验建立起的指标型异常监测手段往往不能满足更为丰富的业务场景, 因此如何建立准确可靠的分析预测模型, 为运营决策的制定提供可靠的支持, 也成为当前电网企业运营状态监测分析的主要研究方向[2]。
当前运营监测系统中所采用的传统分布式数据提取工具和批处理离线数据分析平台存在实时性较差的性能短板[3], 已无法适应当前实时监测分析的业务需求。电力能源数据分析平台的建设, 正不断朝着规模化、云平台化、集成化的趋势发展, 其研究方向的重点较多地体现在对业务积累数据价值的挖掘上[4], 缺少一种对实时业务数据进行快速分析处理实现运营状态实时监控的策略。内存计算框架的普及, 进一步加速了大规模数据的分析处理[5], 但其仍然无法满足对大规模实时业务数据的分析需求。
考虑到实际运营监测过程中的数据规模与实时性需求, 本文采用了将STORM分布式流计算框架[6]与SAP HANA内存计算平台[7]相结合的方式, 作为实时数据监测分析的系统架构。并以用户实时用电量数据为例, 通过时间窗划分、离散傅里叶变换(Discrete Fourier Transform, DFT)、K-Means聚类算法等数据分析手段建立起异常用电行为识别和用户用电类型分析的分析评价模型。最后, 基于实际的电量业务数据, 评价异常监测与用户分析算法的计算结果, 并比较采用流计算与内存计算相结合的系统架构相对于传统数据分析平台的性能优势。
1 异常用电与用户特征的评价指标在电网企业运营状态的分析中, 根据用户的实时用电量数据, 可以针对用户的用电情况建立起全方位的评价指标。通过分析用户实时用电量的波动情况, 可以对用户的异常用电行为进行监测。通过提取用户高峰期用电特征, 对所有用户行为进行聚类分析, 即可实现对用户类型的划分。
1.1 异常用电行为的评价指标用户的异常用电行为通常根据其实时用电量的波动情况进行衡量。为实现对用户异常用电行为的及时发现并发出报警, 在实际的运营监测过程中, 需要以较短的分析时间间隔对用户的实时用电量数据进行分析, 实现对用户异常用电行为的实时监测。
因此, 本文选择以5 min为一个时间窗, 为避免噪声数据和缺失值的影响, 对每个用户各时间窗内的实时用电量数据进行等距抽样, 对每个时间窗内保留50个数据点。基于各时间窗内数据点的分析计算结果, 实现对每个用户各时间窗对应时段用电行为的异常情况进行判定。
为实现对时间窗内离散数据点的波动情况进行更为准确直观的评价, 本文对时间窗内用户实时用电量的离散抽样点进行DFT, 其具体定义[8]如下:
对于时间窗内N(0≤n≤N-1) 个实时用电量数据构成的有限长序列x(n), 它的离散傅里叶变换x(k)仍为一个长度为N(0≤k≤N-1) 的频域有限长序列。则有:
$x(k) = DFT[x(n)] = \sum\limits_{n = 0}^{N - 1} {x(n)\exp \left( { - {\rm{j}}\frac{{2k{\rm{\pi }}}}{N}n} \right)} $ | (1) |
基于DFT的计算结果, 分别设置频率阈值W和比重阈值A, 计算所有大于频率阈值的频域分量对应的权重分量在所有分量中的占比, 即:
$\bar A = \sum\limits_{i = 1}^k {{a_i}} /\sum\limits_{i = 1}^n {{a_i}} $ | (2) |
其中:k为频域分量wi大于W的分量数;n为所有的频域分量数;ai为wi所对应的幅值。将计算结果与比重阈值A进行比较, 即可时间对异常用电行为的监测。本文将频域阈值W选置为30π, 将比重阈值A置为0.2。
1.2 用户用电特征的评价指标用户用电类型的特征向量, 可以通过用电高峰时段中一个小时内等距划分出的多个时间段的用电量均值和方差进行描述。本文以每两个时间窗, 即每10 min计算用户实时用电量的均值和方差, 构造如下形式的12维特征向量。
$\mathit{\boldsymbol{X}} = {[{m_1},{m_2},...,{m_6},{v_1},{v_2},...,{v_6}]^{\rm{T}}}$ | (3) |
其中:mk(1≤k≤6) 为各时间段内用户用电量的均值; vk(1≤k≤6) 为各时间段内用户用电量的方差。
$\left\{ {\begin{array}{*{20}{l}} {m = \frac{1}{n}\sum\limits_{i = 1}^n {{x_i}} }\\ {v = \frac{1}{n}\sum\limits_{i = 1}^n {{{({x_i} - m)}^2}} } \end{array}} \right.$ | (4) |
其中:n为每个时间段内的实时用电量样本数, 根据异常用电行为监测过程中的抽样结果, 可得n=100。
基于构造的用户用电行为特征向量, 将其代入K-Means聚类算法, 获得平方差准则最小的k个聚类簇, 即可划分出每个用户用电行为所对应的类别, 其计算过程[9]如下:
第1步 设整体样本为n, 从整体样本中任意抽取k个对象作为初始簇的中心, 记为mi(i=1, 2, …, k)。
第2步 分别计算每个数据点p到k个簇中心的距离d(p, m), 即:
$\begin{array}{l} d(i,j) = \\ \quad \sqrt {{{({x_{i1}} - {x_{j1}})}^2} + {{({x_{i2}} - {x_{j2}})}^2} + ... + {{({x_{iq}} - {x_{j1}})}^2}} \end{array}$ | (5) |
其中:i=(xi1, xi2, …, xiq)和j=(xj1, xj2, …, xjq)为q维数据点。
第3步 找到对象p的最小距离, 将p划分到与mi相同的簇中。
第4步 将所有的对象进行计算, 根据每个新簇内的数据点, 计算出新簇的簇中心。
${m_k} = \frac{1}{N}\sum\limits_{i = 1}^N {{x_i}} $ | (6) |
其中:mk代表第k个簇的中心; N代表该簇的数据点数。
第5步 重复上述计算过程, 直到每个聚类簇中心位置变化量的平方和小于指定的收敛阈值, 停止计算, 获得最终聚类结果。
2 数据实时监测分析系统的实现对电网运营状态进行实时监测分析的过程, 通常需要经过包括数据的抽取、数据的清洗、数据的整合、数据的实时计算、数据的阶段性分析、数据的展示以及数据的存储在内的7个数据处理阶段。
2.1 数据处理流程与系统架构划分为满足对电网企业运营状态实时监测分析过程中高实时性与大吞吐量的性能要求, 本文采用了如图 1所示的流计算与内存计算技术相结合的系统架构, 以满足电网企业各业务类型数据的实时监测分析需求。
在使用用户的实时用电量数据实现对异常用电行为的监测和用户用电行为的分析时, 共需要经过以下9个数据处理和分析过程:
1) 将用电量数据加入消息队列, 作为流计算的数据源;
2) 针对噪声值完成数据清洗等预处理操作;
3) 根据区域、用电等级等数据特征进行数据分类;
4) 对各时间窗内的实时用电量记录进行等距抽取;
5) 对抽样结果调用离散傅里叶变换实现异常监测;
6) 基于流计算结果, 构造用户用电行为的特征向量;
7) 调用K-Means聚类算法实现用电行为的分析;
8) 读取内存数据库中的结果实现数据的实时展示;
9) 将监测分析的结果作为历史数据写入磁盘。
其中:第2) ~4) 步的数据预处理过程由流计算层实现;第5) ~7) 步的数据分析计算过程由内存计算层实现。
2.2 基于Kafka并行化数据接入Kafka凭借其基于话题的分布式消息队列特性[10]与大多数分布式流计算系统均有着良好的性能兼容性。故将其作为数据接口层中消息队列的实现方案, 用以对数据源进行分发、产生稳定的数据源。
Kafka将接收到的数据根据其所属的业务系统和对应的业务类型分发进多个话题, 每个话题则成为一种类型的数据源, 如定义用户实时用电量“话题”。话题中的数据存储进由如图 2所示的多个分区队列, 为应用程序提供并发读取每个分区队列数据的方式, 以提高数据的读取效率。
凭借其如图 3所示的Master-Worker分布式系统架构[11], Storm具备大吞吐量、可扩展性、高容错性、高可靠性和易操作性的性能优势, 符合大规模用户实时用电量数据的处理需求, 故将其作为流计算层的实现方案。
Storm将数据流处理过程抽象为如图 4所示的处理逻辑单元组合[12], 通过定义Spout和Bolt分别实现数据流过程中对应数据源操作和各阶段数据处理操作;同时, 配置各处理逻辑单元间的数据流向关系, 实现数据处理逻辑的高效复用, 提高数据处理效率[13]。
整个数据预处理阶段的数据操作可划分为数据读取、数据清洗、数据分类、数据抽样四个步骤, 每个步骤与其对应的处理逻辑单元数量如表 1所示。
SAP HANA是一款由SAP公司开发的基于内存技术实现高效数据处理的分析平台[14], 其系统架构如图 5所示。其内存计算引擎与内存关系引擎相结合的架构优势[15], 降低了数据分析处理过程中的读写开销, 满足对数据进行高效分析计算的目的, 因此将其作为内存计算层的实现方案。
将经过Storm完成数据合并、清洗、时间窗划分等一系列预处理操作后, 将预处理后的结果数据加入SAP HANA的内存关系数据库中, 作为后续分析计算过程中的数据源。
SAP HANA提供了便捷的数据建模方式, 在满足各类型数据集成需求的同时, 为每条数据定义处理操作即可实现DFT计算和K-Means聚类分析等处理过程。使用其内置的预测分析算法库(Prediction and Analysis Library, PAL)即可实现对常用聚类分类算法的调用。
2.5 基于内存关系引擎定制存储模式SAP HANA的内存关系引擎提供了行式存储和列式存储两种存储模式。根据不同类型的数据对应的读写需求, 选择合适的存储模式[16], 实现最优的读写效率。
1) 行式存储。适用于需要读取数据记录全部字段的数据分析操作, 同时基于索引提高数据的查询效率, 用于存储完成预处理后进行数据分析的中间结果。
2) 列式存储。无需额外索引, 提供较高效率的数据压缩方法, 适用于需要分别访问单个属性的数据记录, 用于存储提供给展示层的最终结果。
为实现高效的分析, 完成数据预处理过程后的待分析数据通常选用行式存储方式。为加快数据的查找读取, 对于数据分析结果则通常采用列式存储方式。
3 实验结果分析与平台性能对比本文采用的实验环境是由包含一个Nimbus节点和四个Supervisor节点共计五台PC构成的Storm集群。每台PC均配备Intel Core I5 6500处理器和8 GB内存的计算存储资源。集群中还部署了Kafka和SAP HANA平台。
3.1 异常用电实时监测的实验结果本文将某电力公司在2015年6月10日用电高峰时段中1000万条用户实时用电量数据按产生时间顺序依次写入Kafka分布式消息队列, 作为本次实验的数据源;并分别就异常用电行为监测的准确性和数据处理平台计算的实时性两个指标进行实验测试。
异常用电行为实时监测的准确性由准确率Precision和召回率Recall指标衡量,其计算公式如下:
$Precision{\rm{ = }}TP{\rm{/(}}TP{\rm{ + }}FP{\rm{)}}$ |
$Recall{\rm{ = }}TP{\rm{/(}}TP{\rm{ + }}FN{\rm{)}}$ |
其中:TP表示识别为正样本即异常用电行为的数据中识别正确的数量;FP表示识别为正样本的数据中识别错误的数量;FN表示所有识别为负样本的数据中标注错误的数量, 即实际为异常用电行为却未被识别的样本数量。
将原始数据经由Storm流计算系统完成噪声过滤、分类合并、时间窗划分及抽样等一系列预处理操作,转换为各用户在不同时间窗内的用电量记录数据,并在SAP HANA中完成离散傅里叶变换(DFT)及异常用电行为评价指标的计算, 根据所设置的阈值对异常用电行为进行识别。
结合电量业务系统中已有的异常用电记录, 可以得到对实验数据集中1268个异常用电行为实时监测记录识别结果的准确率Precision=82.7%, 召回率Recall=96.8%。实验结果表明, 本文采用的DFT方法能够监测出对绝大多数异常用电行为, 但监测结果正确率的进一步提高还需依靠更精确的特征分析算法和专家运营决策共同实现。
通过统计表 2中各处理策略在处理不同规模数据时的时间开销,实现对异常状态监控的处理实时性进行全面比较。实验分别在不同平台架构下设计了相同功能的处理程序,并以每100万条数据为一个数据量梯度, 测试了10个数据量级下各处理平台对应的时间开销。在每个数据量级下分别进行三次测试, 对所获得时间开销测试结果取平均, 获得最终的实验分析结果。
从图 6所示的实验结果可知, 将流计算和内存计算技术相结合的系统架构既具备了分布式流处理系统高吞吐量的性能优势, 也具备了内存计算系统的低读写开销, 能够较好地满足大规模数据实时处理的性能需求。
基于流计算过程中得到的数据抽样结果, 对每两个时间窗内的数据记录计算其均值和方差, 构成用户用电行为的特征向量进行K-Means聚类分析。其中设置K-Means算法的类别数K=5, 迭代轮次n=1000, 收敛阈值α=1.0。
将K-Means算法所得到的各用户类型标签与业务系统中记录的用户用电等级进行比对。由表 3中所示的比对结果可知, 由K-Means得到的各类别用户数与用户实际用电等级数量分布基本相同。
为验证流计算和内存计算技术结合的系统架构对数据分析性能的优化情况, 将SAP HANA的PAL算法库中提供的K-Means算法模型与Hadoop的Mahout算法库以及Spark的MLlib算法库所提供的K-Means算法模型进行性能比较。分别统计数据处理过程中的计算时间占比与读写时间占比, 并将3次测试结果取平均得到如表 4所示的结果。
由处理性能对比结果可知, 相对于Hadoop将中间结果写入硬盘的策略, SAP HANA的内存计算引擎显著降低了数据迭代分析过程的读写开销。与同为内存计算引擎的Spark计算框架相比, SAP HANA自带的内存数据库进一步加速了待分析数据的读取过程。尽管内存资源在系统中仍较为宝贵, 但SAP HANA等内存计算平台更适用于较大规模数据的阶段性实时迭代分析。
4 结语针对电网企业运营状态的分析, 电量数据已成为最为直接有效的特征依据。兼具高吞吐量与高实时性的优势, 流计算与内存技术相结合已逐渐成为面向企业大规模数据和高实时需求的解决思路。本文基于用户实时用电量数据实现对用户异常用电的监测以及用电行为的分析, 结合流计算满足了数据的大规模实时处理的需求, 采用内存技术进一步提升了系统的计算性能和读写效率, 为分析和监控提供高实时性、大吞吐量的性能保证。同时, 为电力企业后续的大规模实时数据分析提供了一种可靠高效的借鉴思路。
[1] | 蔡勇. 数据挖掘技术在电网运营监控平台建设中的研究与应用[D]. 上海: 上海交通大学, 2012: 5-6. (CAI Y. Research and application of data mining technology in grid operational monitoring platform [D]. Shanghai: Shanghai Jiao Tong University, 2012: 5-6.) http://cdmd.cnki.com.cn/Article/CDMD-10248-1013020910.htm |
[2] | 陈云. 分布式电力大数据计算分析平台设计与实现[D]. 成都: 电子科技大学, 2016. (CHEN Y. The design and implementation of the distributed computing and analysis platform for power system [D]. Chengdu: University of Electronic Science and Technology of China, 2016.) http://cdmd.cnki.com.cn/Article/CDMD-10614-1016176402.htm |
[3] | 程学旗, 靳小龙, 王元卓, 等. 大数据系统和分析技术综述[J]. 软件学报, 2014, 25(9): 1889-1908. (CHENG X Q, JIN X L, WANG Y Z, et al. Survey on big data system and analytic technology[J]. Journal of Software, 2014, 25(9): 1889-1908.) |
[4] | 李洋, 何宝灵, 刘海涛, 等. 面向全球能源互联网的分布式电源云服务与大数据分析平台研究[J]. 电力信息与通信技术, 2016(3): 30-36. (LI Y, HE B L, LIU H T, et al. Research on distributed generation cloud service and big data analysis platform for global energy interconnection[J]. Electric Power Information and Communication Technology, 2016(3): 30-36.) |
[5] | 程敏. 基于PostgreSQL和Spark的可扩展大数据分析平台[D]. 北京: 中国科学院大学, 2016. (CHEN M. Scalable big data analysis platform based on Postgre SQL and Spark [D]. Beijing: University of Chinese Academy of Sciences, 2016.) http://cdmd.cnki.com.cn/Article/CDMD-80177-1016758078.htm |
[6] | Apache Software Foundation. Storm documentation [EB/OL]. [2016-05-23]. http://storm.apache.org/releases/1.0.3/index.html. |
[7] | SAP Corporation. SAP HANA introduction [EB/OL]. [2016-06-14]. https://www.sap.com/china/product/technology-platform/hana.html. |
[8] | 熊元新, 陈允平. 离散傅里叶变换的定义研究[J]. 武汉大学学报(工学版), 2006, 39(1): 89-91. (XIONG Y X, CHEN Y P. Research on definition of discrete Fourier transform[J]. Engineering Journal of Wuhan University, 2006, 39(1): 89-91.) |
[9] | LIKAS A, VLASSIS N, J. VERBEEK J. The global k-means clustering algorithm[J]. Pattern Recognition, 2003, 36(2): 451-461. DOI:10.1016/S0031-3203(02)00060-2 |
[10] | Apache Software Foundation. Kafka introduction [EB/OL]. [2016-07-08]. http://kafka.apache.org/intro. |
[11] | 王铭坤, 袁少光, 朱永利, 等. 基于Storm的海量数据实时聚类[J]. 计算机应用, 2014, 34(11): 3078-3081. (WANG M K, YUAN S G, ZHU Y L, et al. Real-time clustering for massive data using Storm[J]. Journal of Computer Applications, 2014, 34(11): 3078-3081.) |
[12] | 李一辰, 李绪志, 阎镇. 实时流计算在航天地面数据处理系统中的应用[J]. 微电子学与计算机, 2014, 31(9): 15-19. (LI Y C, LI X Z, YAN Z. Real-time stream computing in aerospace system's data disposing[J]. Microelectronics & Computer, 2014, 31(9): 15-19.) |
[13] | 孙大为, 张广艳, 郑纬民. 大数据流式计算:关键技术及系统实例[J]. 软件学报, 2014, 25(4): 839-862. (SUN D W, ZHANG G Y, ZHENG W M. Big data stream computing: technologies and instances[J]. Journal of Software, 2014, 25(4): 839-862.) |
[14] | 嵇智源, 潘巍. 面向大数据的内存数据管理研究现状与展望[J]. 计算机工程与设计, 2014, 35(10): 3549-3506. (JI Z Y, PAN W. Present research status and prospects of in-memory data management in big data era[J]. Computer Engineering and Design, 2014, 35(10): 3549-3506. DOI:10.3969/j.issn.1000-7024.2014.10.037) |
[15] | 黄岚, 孙珂, 陈晓竹, 等. 内存集群计算:交互式数据分析[J]. 华东师范大学学报(自然科学版), 2014(5): 216-227. (HUANG L, SUN K, CHEN X Z, et al. In-memory cluster computing: Interactive data analysis[J]. Journal of East China Normal University (Natural Science), 2014(5): 216-227.) |
[16] | 张延松, 王珊, 周烜. 内存数据仓库集群技术研究[J]. 华东师范大学学报(自然科学版), 2014(5): 117-132. (ZHANG Y S, WANG S, ZHOU X. Research on in-memory data warehouse cluster technologies[J]. Journal of East China Normal University (Natural Science), 2014(5): 117-132.) |