logo资料库

论文研究-基于Spark计算框架的高铁振动数据经验模态分解.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
Computer Engineering and Applications 计算机工程与应用 2016,52(20) 103 基于 Spark 计算框架的高铁振动数据经验模态分解 李 明,李天瑞,陈 志,杨 燕 LI Ming, LI Tianrui, CHEN Zhi, YANG Yan 西南交通大学 信息科学与技术学院,成都 611756 School of Information Science and Technology, Southwest Jiaotong University, Chengdu 611756, China LI Ming, LI Tianrui, CHEN Zhi, et al. Empirical mode decomposition of high-speed rail data based on Spark com- puting framework. Computer Engineering and Applications, 2016, 52(20):103-107. Abstract:The security problem of high-speed railway has gained more and more attention. The vibration signals of the train operation are collected by the sensors installed on the high speed rail. The faults of high speed rail can be discovered by analyzing and processing the collected vibration data. The Empirical Mode Decomposition(EMD)is a method which decomposes nonlinear and non-stationary signals to a sum of several intrinsic mode functions, so it plays a vital role in the domains of signal analysis and processing. However, the volume of collected data is very big. Then the speed of signal decomposition becomes a bottleneck. This paper presents a parallelized EMD algorithm under Spark, a framework based on the distributed memory computing and Resilient Distributed Datasets(RDD). Then, the real data is employed to validate the proposed algorithm. Finally, the experimental results are analyzed by three indexes, e.g., Speedup, Sizeup and Scaleup. It is shown that the parallelized method has good effect on the three indexes, which indicates that it can provide a reliable solution for the decomposition of a large number of vibration signals. Key words:vibration signals; Empirical Mode Decomposition(EMD); Spark; parallelization 摘 要:高铁的安全问题越来越受到人们关注,通过安装在高铁上的传感器可以采集到列车运行过程中的振动信 号。分析和处理采集到的振动信号,可以对列车运行过程中出现的故障进行诊断。经验模态分解(EMD)适用于将 非线性非平稳的信号分解为若干个固有模态函数之和,它在信号分析和处理领域起着至关重要的作用。但列车在 不断运行过程中采集的数据量非常大,信号处理的速度成为了瓶颈。因此,借助大数据处理框架 Spark 基于分布式 的内存运算、弹性式分布式数据集等特点,提出了基于 Spark 的并行化 EMD 算法,并利用实际数据进行算法评测,通 过 Speedup、Sizeup、Scaleup 三个指标对实验结果进行分析,得到该并行化方法在三个指标上都有良好的效果,表明 该算法可以为大量的振动信号分解提供可靠的解决方案。 关键词:振动信号;经验模态分解;Spark;并行化 文献标志码:A 中图分类号:TP312 doi:10.3778/j.issn.1002-8331.1603-0074 1 引言 近年来,为适应国民经济的发展和满足人们出行的 需要,修建高速铁路成为铁路建设的新亮点。随着高速 铁路的快速发展,列车行驶的安全性也越来越受到人们 的关注。高速列车在长时间的高速重负荷的运行中,列 车走行部难免会出现故障和缺陷,任何细小的故障或缺 陷都可能会危及到列车的安全运行。安装在列车上的 振动传感器采集的数据可以反映列车的运行状况。通 过分析和处理采集到的振动数据,可以对列车运行过程 中出现的故障进行分析与诊断。其中故障诊断 [1-2]过程 中至关重要的步骤是特征提取,针对振动信号非平稳特 点,现有许多特征提取方法包括短时 Fourier 变换[3]、小波 基金项目:国家自然科学基金(No.61573292)。 作者简介:李明(1991—),男,硕士,研究领域为云计算、机器学习,E-mail:869751152@qq.com;李天瑞(1969—),男,博士,教授, 主要研究领域是智能信息处理、数据挖掘、云计算、大数据等;陈志(1990—),男,硕士,研究领域为云计算、机器学习; 杨燕(1964—),女,博士,教授,主要研究领域为数据挖掘、计算智能、集成学习等。 收稿日期:2016-03-07 修回日期:2016-04-25 文章编号:1002-8331(2016)20-0103-05 CNKI 网络优先出版:2016-07-08, http://www.cnki.net/kcms/detail/11.2127.TP.20160708.1732.016.html
104 2016,52(20) Computer Engineering and Applications 计算机工程与应用 变换[4]、EMD[5]等。很多学者在单机上实现了对机械故障 的特征提取方法。文献[6]讨论了 EMD 在齿轮故障诊断 中的运用,得出了该方法能够有效地降低噪声,提高信 噪比,突出齿轮故障振动信号的特征,从而提高齿轮故障 诊断的准确性。文献[7]讨论了近似熵和 EMD 在高铁故 障诊断上的运用,并在单机上进行了故障诊断准确率的 实验。EMD 在振动数据分析和处理中起着至关重要的 作用,它基于信号局部的特征,将信号分解为一系列的内 在模态函数(IMF)之和。但它的分解是一个不断迭代的 过程,算法复杂度高。随着列车上安装传感器的增加和 列车运行速度的提高,采集到的振动数据量越来越大。面 对这样的大规模监测数据,进行 EMD 分解的速度就成为 了亟待克服的瓶颈,显然单机处理难以满足实际处理的需 求。因此,本文拟探讨采用并行处理方法来解决 EMD 分解问题。文献[8]提出了基于 MapReduce[9-10]的高铁振 动数据预处理,通过 MapReduce 并行模型,加快了高铁 振动数据预处理的速度,但没有涉及到 EMD 分解问题。 随着互联网数据的爆炸式增长,提出了越来越多的大 数据处理方法,也有很多像 Hadoop[11]、Storm[12]和 Spark[13] 的大数据处理框架出现。Spark是 2011年由 U.C.Berkeley 的 AMP 实验室开发的一个通用的并行计算框架。它在 处理大数据上有独有的优势,即由于它是基于内存的计 算和它的图形调度模式,因此它非常适用于迭代式计 算。在 Hadoop 集群中,如果任务需要不断迭代,就需要 内存和磁盘不停地读写,这样大大降低了数据的处理效 率。而 Spark 是基于分布式内存 [14]的框架,每次迭代后 结果不需要写入磁盘,可以直接放在内存中以便下一次 迭代使用这些数据。它提出后受到业界的广泛关注,目 前已经成为最流行的大数据并行处理框架。本文拟研 究在 Spark 内存计算框架中实现对大规模高铁振动数据 进行 EMD 分解,以提高大量监测数据分析和处理效率。 小值点分别连接起来形成上、下包络线,其对应的函数 分别为 x (t) 。 (t)、x 上 下 (2)计算上包络线和下包络线的平均值: (t) = x 11 x 上 (t) + x 2 (t) 下 (3)将原始信号 x(t) 减去 x h 11 如果 h (t) = x(t) - x (t) 11 11 (t) 满足 IMF 的条件,那么 h 11 (t) ,即 11 第一个 IMF 分量。 (1) (2) (t) 将是 x(t) 的 11 (4)如果 h (t) ,再判断 h (t) 不满足 IMF 的条件,那么将 h (t) 作 为 原 始 信 号 ,重 复 上 面 的 步 骤(1)(2),得 到 平 均 值 (t) 是否满足 IMF 的条件, x 12 如果不满足,则继续循环直到满足 IMF 条件为止。假设 经过 k 次循环满足条件,即 (t) (t) = h (t) - x (t) - x 11 11 12 12 h 1k + 1 令 c 1 (t) = h 1k (t) = h 1k + 1 (t) ,那么 c 1 1k + 1 (3) (t) 即为 x(t) 的第一个 IMF 分量。 (5)将 c 1 (t) 从 原 始 信 号 x(t) 分 离 出 去 得 到 剩 余 信 号,即 r 1 将 r 1 (t) = x(t) - c 1 (t) (4) (t) 作为原始信号重复步骤(1)(2)(3)(4),将得 (t) 。重复循环 n 次,将得到 n 个原 (t) 指的是不可 (t) 。 r 到第二个 IMF 分量 c 始信号的 IMF 分量和一个残项 r 分解的量或者研究意义不大。 2 n n 2 2 (t) (t) (t) = x(t) - c 1 (t) = r (t) - c 1  r ì 1 ï ï r í ï ï r î (6)将式(5)的所有的等式相加,可以计算出 x(t) ,即 x(t) = å (t) - c (t) = r (t) + r (t) (t) n - 1 c n n n (5) (6) i i = 1 n 2 相关理论知识 2.2 Spark 框架介绍 本章主要介绍 EMD 分解的原理和 Spark 并行编程 框架。 2.1 EMD EMD 是 Huang 等人创造性提出的一种新型自适应 信号时频处理方法[15],特别适用于非线性非平稳信号的 分析处理。EMD 基于信号的局部特征时间尺度,把信 号分解为若干个 IMF 之和。这些 IMF 突出了信号的局 部特征,它们也有效地反映了原信号的特征。IMF 需要 满足两个条件:其极值点的个数和零点个数相同或最多 相差一个;分别连接其局部最大值和局部最小值的两条 包络线在任意一点的均值为零。 EMD 的具体分解步骤如下[15]: (1)找出 x(t) 中的局部极大值和局部极小值,然后 用三次样条线将所有的局部极大值点和所有的局部极 Spark 是基于类似 MapReduce 编程模型实现的基于 内存分布式计算 [16],几乎拥有 Hadoop MapReduce 所具 有的优点;但不同于 Hadoop 的是其 Job 中间输出和结果 可 以 保 存 在 内 存 中 ,从 而 不 再 需 要 读 写 HDFS,因 此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代 的算法。在 Spark 集群中,有两个重要的元素,即 Driver 和 Worker。Driver 程序是应用逻辑执行的起点,而多 个 Worker 用 来 对 数 据 进 行 并 行 处 理 。 数 据 通 常 是 与 Worker搭配,并在集群内的同一套机器中进行分区[17]。在 执行阶段,Driver 程序会将 code/closure 传递给 Worker 机 器,同时相应分区的数据将进行处理。数据会经历转换 的各个阶段,同时尽可能地保持在同一分区之内。执行 结束之后,Worker 会将结果返回到 Driver 程序。Spark 集群中所有的 Worker 都与 Driver 保持通信,Driver 起到
李 明,李天瑞,陈 志,等:基于 Spark 计算框架的高铁振动数据经验模态分解 2016,52(20) 105 大脑的作用,将要执行的任务合理分配到各个 Worker[18]。 在集群背后,有一个非常重要的分布式数据架构,即 弹性分布式数据集(Resilient Distributed Dataset,RDD)[14], 它是逻辑集中的实体,但在集群中的多台机器上进行了 分区。通过对多台机器上不同 RDD 联合分区的控制,就 能够减少机器之间数据混合(data shuffling)。Spark 提供 了一个“partition-by”运算符,能够通过集群中多台机器之 间对原始 RDD 进行数据再分配来创建一个新的 RDD。 RDD 可以随意在内存中进行缓存,因此它提供了更快速 的数据访问。缓存的粒度大小为一个RDD,因此一个RDD 要么被全部缓存,要么不进行缓存。在集群中有足够的 内存时,Spark 会根据 LRU 驱逐算法[19]将 RDD 进行缓存。 RDD 提供了一个抽像的数据架构,不必担心底层数据的 分布式特性,而应用逻辑可以表达为一系列转换处理, 通常是以一系列 Transformation 和 Action 来表达的。前 者在 RDD 之间指定处理的相互依赖关系 DAG[20],后者 指定输出的形式。调度程序通过拓扑排序来决定 DAG 执行的顺序,即将一个任务划分成不同的 Stage,每个 Stage 可以形成很多 Task 任务分配给 Worker 执行。 2.3 Spark 程序流程 对于一个 Spark 数据处理程序而言,首先需将要处理 的数据转换为 Spark 程序可以操作的对象 RDD,然后经 过一系列的转换操作、控制操作、输出操作来完成一个作 业。当然一个 Spark 应用程序中,可以有多个行动操作, 也就是有多个作业的存在。其执行流程如图 1 所示。 HDFS/Hbase 存储系统 Scala 集合 Scala 变量 就会产生几百万甚至更多的段。由于要对每个段都要 进行 EMD 分解,如果在单机上进行处理,这样的效率非 常低下。结合 Spark 编程模型,由于每个段的处理都是 相对独立的,它们处理的先后顺序对结果并没有影响。 因此可以将这些数据分配到 Spark 集群中不同的节点上 进行同时处理,这样可以大大提高数据的处理效率。 3.2 EMD 分解并行化 EMD 分解的并行化算法如图 2 所示。图 2 反映了 振动数据集并行化计算的整个流程,首先将预处理过的 高铁振动数据集读入集群并转化为 RDD,RDD 通过调 用算子来实现 RDD 的转换。RDD 内部也分为很多的 Partition,Partition 的大小可以进行设置,一般为 64 MB。 每个 Partition 也就是并行的基本单位,即并行单元。不 同的 Partition 可以分配到集群中不同的 Worker 进行计 算,这样就实现了高铁振动数据的并行化分解。 高 铁 振 动 数 据 集 RDD Partition 1 RDD 求出 IMF 分量 Partition 2 求出 IMF 分量 … 并行单元 Partition n-1 求出 IMF 分量 Partition n 求出 IMF 分量 RDD.collect() 振 动 数 据 分 解 结 果 图 2 并行高铁振动数据 EMD 分解 图 3 展 示 了 在 并 行 过 程 中 数 据 的 状 态 转 移 过 程 。 首先,读取待分解的高铁振动数据,这时数据是 String RDD 创建操作 转换操作 行动操作 RDD 控制操作 高铁数据结构 ArrayBuffer[String] Sc.parallelize() RDD1 RDD1.map(_.split(“”).map(_.toDouble)) RDD2 RDD2.map(_.toArrayBuffer) 图 1 Spark 程序流程 3 EMD 分解的并行化算法 3.1 EMD 分解的并行化原理 Spark 采用类似 MapReduce 编程思想的原理,将同一 个任务分配到集群中不同的节点同时处理,提高数据处 理的效率。大量数据进行 EMD 分解时,首先将数据进行 分段,分段的大小与数据采集的频率相关。每段数据的 个数和频率大小相近即可。由于实验数据量很大,这样 RDD3 RDD3.map(_.emd()) RDD4 RDD4.collect() 经过 emd 分解的数据 ArrayBuffer[Double] 图 3 并行数据状态转移图
106 2016,52(20) Computer Engineering and Applications 计算机工程与应用 类型的,不能直接参与运算。通过 RDD 自带的 map 函 数,将每个字符串用空格分开,然后将其转换为 Double 类型。由于进行处理的高铁数据是一段,所以需要将这 段数据转换为一个 Double 类型的数组即 RDD3。最后, RDD3 通过 map 函数调用 Scala 写好的 emd 函数,就将 RDD3 中的每个 ArrayBuffer[Double]进行了 IMF 的求解 并转换得到 RDD4,利用 Spark 的 collect 可以将 RDD4 本 地化,这样就求解出了最终的结果。 4 实验设计与结果分析 本章首先介绍了实验环境和实验方案的设计,然后 对实验结果进行分析。 4.1 实验环境 均运行时间。实验结果的通过 Sizeup、Speedup 和 Scaleup 三个指标来评价。 (1)Sizeup Sizeup 用来评价高铁振动数据不断增长时的并行 算法性能,其定义如下[8]: Sizeup(Dn) = T T sn s1 s1 Sizeup 反应了在集群节点个数不变的情况下,按倍数增 加数据集的大小。 T 为执行基准数据集 D 的时间,T sn 表示执行 n 倍与数据集 D 的执行时间。本实验的基准 数据集为 Test1。 (2)Speedup Speedup 用来评价并行集群节点个数增长时的并行 实验集群中各个节点的配置属性如表 1 所示。 算法性能,其定义如下[8]: 表 1 节点信息表 属性名 节点个数 Spark 版本 Spark 模式 JDK 版本 节点 CPU ® Intel 属性值 5 1.2.1 Stand Alone 1.7.0 XeonTM CPU 2.80 GHz*4 节点内存/GB 6 4.2 实验方案设计和评价指标 本文的研究数据来源于西南交通大学牵引动力国 家重点实验室,数据为机车车辆整车在运行过程中采集 的振动数据。数据分为正常、抗蛇行减振器故障、横向 减振器故障和空气弹簧故障四种工况。每种工况下让 列车在 40 km/h、80 km/h、120 km/h、140 km/h、160 km/h、 200 km/和 240 km/h 的速度下运行,然后保存传感器采 集的振动数据,采样频率为 243 Hz。传感器一共有 58 个通道,每个通道都采集到大量的振动数据。为了验证 EMD 分解的并行化效果,将振动数据进行切分。振动 数据切分的大小和采样频率相关,这里选取了每 256 个 点进行切分,也就是 256 个点为一条数据。设计了 5 个 数据集分别为 Test1、Test2、Test3、Test4、Test5。数据集 的具体大小如表 2 所示。 表 2 数据集信息 数据集名称 大小/MB Test1 Test2 Test3 Test4 Test5 200 400 600 800 1 000 本实验主要测试在不同数据集下和在不同集群节点 个数下高铁振动数据的处理效率。实验测试了集群节 点个数分别为 1、2、3、4、5 时 Test1、Test2、Test3、Test4 和 Test5 的运行时间。针对每个数据集,运行 5 次并记录平 Speedup( p) = T 1 T p Speedup 反应了在保持数据集大小不变的情况下,不断 增加节点个数。其中,T 表示在一个节点上运行的时 1 间,T 表示在 p 个节点时的运行时间。 p (3)Scaleup Scaleup 用来评价数据集和节点个数都在成倍增加 时并行算法的性能,其定义如下[8]: Scaleup(Dp) = T T D1 Dp 其中,T D1 表示在 1 个节点下执行基准数据集 D 的时间, 表示在 p 个节点下执行 p 倍基准数据集的时间。 Dp T 4.3 实验结果分析 表 3 记录了数据集在不同节点上运行所花费的时 间。图 4 为 5 个数据集在不同节点下的运行时间折线 图,在相同数据集下,随着集群运行节点数目的增加而 振动数据分解花费的时间不断减小;随着数据集大小的 增加,节点个数的差异对运行时间的影响更为明显,因 此 EMD 分解的并行化是可行的。从图 5 的 Sizeup 的折 线图可以看出,EMD 算法复杂度基本与数据集的大小 成正比。Speedup 的指标最优的情况是随着节点数的增 加,Speedup 呈线性变化。但集群节点之间的通信和任 务的分配会影响 Speedup 指标。如图 6 所示,本次实验 的 Speedup 指标良好。图 7 显示 Scaleup 指标在 1 附近, 说明算法对数据集有良好的适应性。 表 3 不同数据集在不同节点下的运行时间 节点数目 Test1 Test2 1 2 3 4 5 39 26 17 13 13 76 41 32 25 26 Test3 116 Test4 155 67 42 38 27 92 63 51 40 min Test5 192 104 75 52 50
李 明,李天瑞,陈 志,等:基于 Spark 计算框架的高铁振动数据经验模态分解 2016,52(20) 107 1 node 2 nodes 3 nodes 4 nodes 5 nodes 200 150 100 50 / n i m 间 时 行 运 0 200 400 600 800 数据大小/MB 1 000 图 4 数据运行时间折线 200 MB 400 MB 600 MB 800 MB 1 000 MB 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 p u d e e p S 1 node 2 nodes 3 nodes 4 nodes 5 nodes 400 600 800 数据大小/MB 图 5 Sizeup 指标 1 000 p u e z i S 5.0 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 200 1.2 1.0 0.8 0.6 0.4 0.2 p u e l a c S 1 2 3 节点数 4 5 图 6 Speedup 指标 0 200/1 400/2 600/3 800/4 1 000/5 数据大小/MB/节点数 图 7 Scaleup 指标 5 结束语 高铁的快速发展带来了大量的高铁振动数据,为了 应对高铁数据的分析处理,本文基于分布式内存计算框 架 Spark 提出了一种并行的 EMD 分解方法。利用 Spark 集群的大数据处理的特点,将待处理的高铁振动数据封 装为 RDD,并通过调用 RDD 中封装好的 Transformation 和 Action 两种类型的函数,实现了对 EMD 算法的并行 求解。实验通过三个评价指标对并行算法的优劣进行 了评价,验证了所提出的算法的可用性,为大量的高铁 振动数据的分解提供了可行的解决方案。 参考文献: [1] Frank P M.Fault diagnosis in dynamic systems using analytical and knowledge-based redundancy:a survey and some new results[J].Automatica,1990,26(3):459-474. [2] 周东华,胡艳艳.动态系统的故障诊断技术[J].自动化学报, 2009,35(6):748-758. [3] Nussbaumer H J.Fast Fourier transform and convolution algorithms[M].[S.l.]:Springer Science & Business Media, 2012. [4] 张静远,张冰,蒋兴舟.基于小波变换的特征提取方法分析[J]. 信号处理,2000,16(2):156-162. [5] Lei Y,Lin J,He Z,et al.A review on empirical mode decom- position in fault diagnosis of rotating machinery[J].Mechanical Systems and Signal Processing,2013,35(1):108-126. [6] 于德介,程军圣.EMD 方法在齿轮故障诊断中的应用[J].湖 南大学学报:自然科学版,2002,29(6):48-51. [7] 赵晶晶,杨燕,李天瑞,等.基于近似熵及 EMD 的高铁故障 诊断[J].计算机科学,2014(1):91-94. [8] 赵成兵,李天瑞,王仲刚,等.基于 MapReduce 的高铁振动 数据预处理[J].南京大学学报,2012,48(4):390-396. [9] Dean J,Ghemawat S.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008, 51(1):107-113. [10] Chu C,Kim S K,Lin Y A,et al.Map-reduce for machine learning on multicore[J].Advances in Neural Information Processing Systems,2007,19. [11] Shvachko K,Kuang H,Radia S,et al.The hadoop distributed file system[C]//Proceedings of 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies(MSST), 2010:1-10. [12] Roberts A,Pachter L.Streaming fragment assignment for sequencing experiments[J].Nature real-time analysis of Methods,2013,10(1):71-73. [13] Zaharia M,Chowdhury M,Franklin M J,et al.Spark: cluster computing with working sets[C]//Proceedings of the 2nd USENIX Conference on Hot Topics in Cloud Computing,2010:1765-1773. [14] Zaharia M,Chowdhury M,Das T,et al.Resilient distributed datasets:a fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX Sympo- sium on Networked Systems Design and Implementation (NSDI),2012:15-28. (下转 176 页)
分享到:
收藏