应用MaxCompute实现变压器局部放电相位分析
1 引言
随着智能电网建设的不断推进,智能化电力一次设备和常规电力设备的在线监测都得到了较大发展并成为趋势,监测数据日益庞大,电力设备在线监测系统在数据存储和处理方面面临巨大的技术挑战。
局部放电是高压设备的重要监测内容。局部放电相位分析方法是目前成熟且应用广泛的宏观特征提取方法。随着传感器技术的进步,局部放电的检测方法呈现多样化,局部放电信号的频率高且频带较宽,这就要求信号采样率高,可以达到KHz甚至MHz(每秒采样百万次),加之需要监测的设备众多,因此监测数据量呈现海量化,传统的基于单机的存储和相位分析已经难以满足当前海量数据的计算需求,迫切需要大数据处理技术的支持。
笔者在前期的研究中,使用了实验室自建的Hadoop平台,遇到的问题主要包括:1)受资金限制,集群规模较小,存储和计算资源有限。2)集群维护困难;3)服务仅在单位内网可用;4)前期需要购买硬件资金投入高,设备的利用率又很低。5)并行程序框架限制:Hadoop的MapReduce在每一轮操作之后,数据必须存储到分布式文件系统上或者HBase,接下去的Map任务执行了冗余的IO操作,导致性能下降。
公有云计算平台以按需租用的方式,将用户从硬件采购、组网、平台搭建、系统软硬件维护中解脱出来,将存储资源、计算资源以Web Service的方式封装,并对外售卖,使用户可以专心于构建系统的业务逻辑。笔者尝试利用阿里云MaxCompute存储变压器局部放点数据,并加速相位分析过程。实验结果表明,该方法相比于Hadoop MapReduce在计算效率上明显提升,并在数据可靠性、服务可用性以及成本方面具有明显优势。
2 局部放电数据的MaxCompute表存储
局部放电相位分析将多个工频周期内监测所得的局部放电参数(放电次数N、视在放电量Q或放电幅值,及放电所在相位Φ)折算到一个工频周期内,计算其统计规律性,获取放电谱图,统计放电特征,用于模式识别。
MaxCompute以表(Table)为基本单元存储数据,与Hadoop的文件系统(HDFS)以文件为单位存储数据有明显差别,表的模式不能直接套用HDFS文件的格式,需要重新设计存储模式。局部放电信号采样数据(二进制dat文件)在上传至MaxCompute前,需要转换成文本文件格式(.csv文件),再使用Tunnel工具将本地数据上传至MaxCompute表。
如果使用HDFS文件存储,可以每行存储一个工频周期的采样数据(本文中,含80万个采样点),之后执行MapReduce分析任务时,可以将一行数据作为Map函数的输入。但是MaxCompute表的列数和表格单元的数据类型存在限制,列的数量不能超过1024列,表格单元的数据类型目前仅支持6种数据类型(Bigint,Double,String,Boolean,Datetime,Decimal),因此无法在一行内存储80万个采样值。这就需要重新设计表结构。本文中,设计了表MPD,用于存储原始采样数据,如图1所示。MPD采用2级分区,其中第1级分区名名称是DeviceID,表示设备ID。第2级分区是采集时间。
图1 MPD表结构
Maxcompute支持分区,这里以分区键作为检索条件,可以大幅减少数据搜索范围,并能快速定位到所需数据,有效提升访问性能,并节省费用。
局部放电数据分析过程中,需要产生中间结果数据,因此又设计了基本参数NQF表和放电谱图PT表,表模式如下:
表1 NQF表
SampleID |
Time |
Phase |
Max |
样本ID |
时间 |
相位 |
峰值(统计得到) |
其中,SampleID表示用于完成一次特征计算的谱图数据的编号。
表2 PT表
SampleID |
Wid |
TotalQ |
AverageQ |
Nums |
Max |
样本ID |
窗编号 |
放电总量 |
平均放电量 |
放电次数 |
峰值 |
相位分析最终产生的结果是放电波形数据的统计特征,包含:正负半周期谱图偏斜度Sk、陡峭度Ku、局部峰点数Pe、互相关系数Cc等,如表3所示。
表3 统计特征表
SampleID |
SkN |
SkQ |
KuN |
KuQ |
PeN |
PeQ |
Cc |
QF |
MCC |
这些特征的含义在此不做过多解释,请查阅相关文献。
3 使用MR2完成放电数据的相位分析
MR2是MaxCompute的扩展MapReduce模型,可以在Reduce后面直接执行下一次的Reduce操作,而不需要中间插入一个Map操作,这可以有效减少磁盘IO。可以支持Map后连接任意多个Reduce操作,比如Map-Reduce-Reduce…。
相位分析过程需要多个MapReduce任务串联完成,如图2所示。
图2 相位分析MapReduce任务关系
格式转换是为了将采样数据上传至ODPS表而做的数据预处理,主要任务是将二进制采样数据转换成Tunnel能够使用的文本格式。
子任务1用于提取基本统计参数n-q-φ,需要扫描MPD表指定分区,找到放电过程,并记录放电相位和幅值。Mapper函数对逐条输入的采样数据,根据预先设定的纵向阈值进行数据筛选,并将大于阈值的采样点输出至Combiner。Combiner是本地(与Mapper在相同的节点)执行的汇总,对Mapper的输出结果集合,寻找峰值点,并输出至Reducer进行汇总。Combiner有效的分担了Reducer的数据汇总工作,并且减少了Reducer所在节点传输的数据量,可以有效提升并行计算过程的速度。Reducer函数负责汇总由Combiner输出来的极值点,并使用预先设定的横向阈值进行极值点的筛选。如果两个极值点距离“很近”(相位差小于横向阈值),则认为是同一次放电。输出的结果存储于NQF表。
子任务2接收NQF表的数据作为输入,计算放电谱图和统计特征。为了加快计算速度,设计了Map-Reduce1-Reduce2模式的计算过程,使谱图数据作为中间结果缓存在Maxcompute分布式内存中,节约了磁盘读取的开销。Reduce1和Reduce2的连接使用了Maxcompute提供的Pipeline完成。子任务2最终的输出是统计特征表,可以用于后续的模式识别任务,模式识别可以写程序完成,或者使用阿里云机器学习平台去完成。
4 实验分析
在实验室完成了电晕放电、悬浮放电、气泡放电和油中放电实验。局部放电信号采集仪器采用TWPD-2F局部放电综合分析仪,最大采样频率为40MHz,采集信号的有效频带为40k~300kHz。
为验证所设计的分析算法性能和稳定性,选取了不同大小的数据集,如表4所示。数据集1x表示1倍数据,包含50个文件(50条局放数据),本文中选用50条局放数据进行1次统计特征的提取。
表4 实验用数据集
数据集ID |
记录数(dat文件数)(条) |
dat(GB) |
csv(GB) |
MaxCompute Table(GB) |
Table记录数(万条) |
压缩比 |
1x |
50 |
0.305 |
0.898 |
0.203 |
4000 |
4.421 |
2x |
100 |
0.61 |
1.75 |
0.425 |
8000 |
4.118 |
4x |
200 |
1.22 |
3.5 |
0.852 |
16000 |
4.108 |
8x |
400 |
2.44 |
7 |
1.523 |
32000 |
4.596 |
16x |
800 |
4.88 |
14 |
3.447 |
64000 |
4.061 |
32x |
1600 |
9.76 |
28 |
6.394 |
128000 |
4.379 |
64x |
3200 |
19.52 |
56 |
12.688 |
256000 |
4.414 |
128x |
6400 |
39.04 |
112 |
25.972 |
512000 |
4.312 |
256x |
12800 |
78.08 |
224 |
51.952 |
1024000 |
4.427 |
分别在单机环境下、实验室自建的Hadoop平台(6个计算节点)下和Maxcompute平台下完成放电数据的相位分析,(分别命名为S-PRPD、Hadoop-PRPD、ODPS-PRPD),测量算法执行的时间、使用的硬件资源(CPU、内存)进行性能对比,如图3、图4、图5所示。
图3 相位分析执行任务执行时间
在图3中,S-PRPD算法在单机环境下运行,执行时间随数据量增加急剧增长。只完成了4X数据集的分析任务(更大数据量耗时太长)。Hadoop-PRPD算法在自建Hadoop平台下执行。受存储容量和计算性能影响,实验只完成了16x数据集的分析任务,算法执行时间缓慢增长。ODPS-PRPD算法运行在Maxcompute平台下,完成了256X数据集的分析(还可以更大),运行时间平稳,在数据规模成倍增长情况下,整体运行时间增长很少或不增长,甚至,在分析8X数据集时出现负增长。主要归因于ODPS硬件的弹性伸缩,如图4和图5所示。
图4 CPU核心数的消耗
图5 内存消耗
从图3和图4中可以看出,随着数据规模的增长,ODPS-PRPD使用的硬件资源总体呈现线性增长的趋势。数据规模越大,为其分配的硬件资源越多,但也不是严格的线性关系。Maxcompute为并行任务分配的硬件资源有一个复杂的算法实现,目前阿里云尚未公开,使用者暂不能控制资源的分配。虽然底层细节对用户透明,但是这种弹性伸缩的性质还是能够强有力的为大数据分析助力。当数据规模达到51GB(256x)时,使用的CPU核心数达到了1093,内存达到了1639GB。这种硬件条件是目前很多数自建数据处理平台难以达到的。
最后来说一下成本费用。Maxcompute采用租用的方式,无需自行购买硬件设备和软件,相对自建Hadoop或者其他大数据分析平台,前期投入成本极低。Maxcompute以项目(Project)为单位,对存储、计算和数据下载三个方面分别计费。数据上传目前暂不收取费用。存储价格目前是0.0008元/GB/小时,计算费用是0.3元/GB。计算费用中,目前仅开放了SQL的计费,执行MapReduce暂时是免费。因此,本文实验实际产生的费用只有存储费用,做几天的实验,只花了几元钱。