国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Storm的局部放電信號集合經(jīng)驗(yàn)?zāi)B(tài)分解

2020-05-20 01:19:40朱永利
關(guān)鍵詞:分段集群組件

楊 航,朱永利

華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,河北 保定 071003

1 引言

近年來,隨著分布式計(jì)算框架的出現(xiàn),數(shù)據(jù)流的實(shí)時(shí)處理技術(shù)逐漸在設(shè)備狀態(tài)監(jiān)測領(lǐng)域得到應(yīng)用。目前,電力生產(chǎn)行業(yè)正朝著智能化的方向發(fā)展,各種電力設(shè)備的監(jiān)測數(shù)據(jù)以數(shù)據(jù)流的形式源源不斷地傳到遠(yuǎn)程的監(jiān)控中心。數(shù)據(jù)流有著產(chǎn)生速率快、數(shù)據(jù)量大的特點(diǎn),因此往往難以存儲,必須及時(shí)處理。電力大數(shù)據(jù)的出現(xiàn),對數(shù)據(jù)中心的計(jì)算能力提出了更高的要求。目前國內(nèi)外對變壓器、容性設(shè)備、高壓斷路器等電力設(shè)備的在線監(jiān)測都做了大量深入研究,監(jiān)測量的范圍也越來越廣泛[1]。時(shí)序波形信號作為電力設(shè)備重要的監(jiān)測量,為電力設(shè)備的狀態(tài)評估提供了重要依據(jù)。局部放電信號是時(shí)序波形信號的一種,它既是變壓器絕緣劣化的征兆,又是變壓器絕緣劣化的原因[2]。不同類型的局部放電對變壓器絕緣的破壞力有較大差異,因此有效分析和識別放電類型對設(shè)備的檢修及維護(hù)具有重要的指導(dǎo)意義。

現(xiàn)階段的電力設(shè)備在線監(jiān)測平臺大多僅能接收監(jiān)測裝置的“熟數(shù)據(jù)”,如一次設(shè)備絕緣放電電流波形信號須在監(jiān)測裝置處被處理成放電次數(shù)、峰值和平均電流后方能上傳,這樣就丟失了大量的頻譜信息[3]。因此本文提出基于Storm 計(jì)算框架對監(jiān)測到的原始時(shí)序信號進(jìn)行特征提取,以保證信息的完整性。通過分析更完整的時(shí)序信號,可以對電力設(shè)備的運(yùn)行狀況進(jìn)行診斷。其中特征提取是故障診斷的重要前提,針對非平穩(wěn)信號目前有很多特征提取的方法,常用的有傅里葉變換、小波變換、經(jīng)驗(yàn)?zāi)B(tài)分解(Empirical Mode Decomposition,EMD)等。其中EMD方法相對傳統(tǒng)的信號處理方法有著更好的分辨率和自適應(yīng)性,被廣泛用于非平穩(wěn)信號的分析。但EMD 存在著模態(tài)混疊和端點(diǎn)效應(yīng)等問題,因此又有學(xué)者提出了改進(jìn)的EMD 算法,即集合經(jīng)驗(yàn)?zāi)B(tài)分解(Ensemble Empirical Mode Decomposition,EEMD)。EEMD分解方法跟大多信號分解方法一樣,都是計(jì)算密集型的算法,在很多要求有較高實(shí)時(shí)性的信號處理場景下,傳統(tǒng)串行處理方法往往無法滿足需求,因此本文結(jié)合Storm分布式計(jì)算框架部署EEMD并行算法,從而實(shí)現(xiàn)流式波形信號的快速分析。

EMD 算法是由Huang 提出的,到目前為止已經(jīng)有很多學(xué)者將該方法應(yīng)用到非平穩(wěn)信號的分析當(dāng)中。EMD的應(yīng)用領(lǐng)域非常廣泛,例如風(fēng)速預(yù)測[4-6]、腦電波信號分析[7]、轉(zhuǎn)動(dòng)機(jī)械的故障檢測[8-9]等。在電力設(shè)備的故障檢測中也有很多應(yīng)用,但大多是單機(jī)環(huán)境下的信號分析方法,只有為數(shù)不多的基于Spark 和MapReduce 的并行處理方法。文獻(xiàn)[10]利用MapReduce 實(shí)現(xiàn)了并行EEMD分析,但是MapReduce適合離線的大批量數(shù)據(jù)處理,因此實(shí)時(shí)性較Storm 弱一些。文獻(xiàn)[11]利用EEMD方法在Spark平臺進(jìn)行了不同長度的單個(gè)波形信號的并行分解,因?yàn)槠渥x寫是基于HDFS(Hadoop Distributed File System),所以對信號處理速度造成了一定影響。本文基于信號是否分段處理提出兩種并行策略,利用Storm分布式計(jì)算框架設(shè)計(jì)部署并行EEMD算法來進(jìn)行信號的并行化分解,使用Redis作數(shù)據(jù)源,并針對信號的流式處理給出了優(yōu)化策略,以滿足實(shí)際的應(yīng)用需求。

2 EEMD算法基本理論

2.1 EMD算法

經(jīng)驗(yàn)?zāi)B(tài)分解[12]是由Huang 提出的一種自適應(yīng)的信號分解算法,其可將一個(gè)復(fù)雜信號分解為一組單分量信號,這些單分量信號叫作本征模函數(shù)(Intrinsic Mode Function,IMF)。其中,IMF要滿足如下兩個(gè)條件:

(1)在整個(gè)數(shù)據(jù)段內(nèi),極值點(diǎn)的個(gè)數(shù)和過零點(diǎn)的個(gè)數(shù)必須相等或相差最多不能超過一個(gè)。

(2)在任意時(shí)刻,由局部極大值點(diǎn)形成的上包絡(luò)線和由局部極小值點(diǎn)形成的下包絡(luò)線的平均值為零,即上、下包絡(luò)線相對于時(shí)間軸局部對稱。

EMD 算法獲取IMF 是通過不斷篩選得到的,最先得到的是頻率較大的信號分量。其算法的步驟如圖1所示。

圖1 EMD算法流程圖

2.2 EEMD算法

模態(tài)混疊最先是在含有間斷信號的分解中發(fā)現(xiàn)的,其指的是在一個(gè)本征模函數(shù)(IMF)中包含了多種頻率的分量,或者相近頻率的成分分散在不同的IMF 中,導(dǎo)致分解結(jié)果失去意義。因此,為了改善EMD 的模態(tài)混疊問題,Wu 和Huang 提出了基于噪聲輔助數(shù)據(jù)分析的方法——集合經(jīng)驗(yàn)?zāi)B(tài)分解(EEMD)。EEMD 利用白噪聲零均值[13]的特性來抑制噪聲信號的影響,其通過對原始信號加入不同的白噪聲進(jìn)行EMD 分解,最后把獲得的全體IMF分別按層求均值來抵消噪聲,從而讓真實(shí)信號凸顯出來。雖然EEMD 是EMD 的改進(jìn),繼承了原有的信號自適應(yīng)分解、無需選擇基函數(shù)的優(yōu)點(diǎn),且能較好地處理模態(tài)混疊的問題,但是對于所加白噪聲的幅值大小、信號的染噪次數(shù)等參數(shù)往往需要根據(jù)具體的使用場景人為經(jīng)驗(yàn)確定。根據(jù)文獻(xiàn)[14],當(dāng)添加的噪聲幅值較大時(shí),為了減少噪聲對結(jié)果的誤差影響,染噪次數(shù)一般設(shè)置得較大。這就造成了EEMD 算法的運(yùn)算量大幅增加,普通的串行EEMD算法將無法滿足實(shí)際應(yīng)用中對處理速度的要求,因此考慮使用集群來并行化EEMD算法以提高處理效率。

3 Storm框架介紹

Storm 是一個(gè)由Twitter 開源的分布式實(shí)時(shí)計(jì)算框架,其主要用于流數(shù)據(jù)的處理,彌補(bǔ)了Hadoop批處理無法實(shí)時(shí)處理的不足,具有健壯性、容錯(cuò)性、動(dòng)態(tài)調(diào)整并行度等特性。Storm 編程相對簡單,可以使用多種編程語言。Storm 的實(shí)時(shí)性體現(xiàn)在可以支持納秒級的時(shí)延計(jì)算,比SparkStreaming 這種基于時(shí)間窗口“微批”處理的準(zhǔn)實(shí)時(shí)框架具有更低的延遲[15]。Storm在數(shù)據(jù)的實(shí)時(shí)在線處理方面有著獨(dú)特的優(yōu)勢,主要用于日志分析、大數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)、在線學(xué)習(xí)、持續(xù)計(jì)算和分布式RPC(Remote Procedure Call)等。

Storm 是一個(gè)主從架構(gòu)的計(jì)算框架,任務(wù)通過運(yùn)行在Nimbus 守護(hù)進(jìn)程上的Master 節(jié)點(diǎn)分發(fā)給運(yùn)行在Supervisor 守護(hù)進(jìn)程上的 Worker 節(jié)點(diǎn)。在 Storm 中,任務(wù)被封裝成Topology,每一個(gè)工作節(jié)點(diǎn)上運(yùn)行著拓?fù)涞囊徊糠?。一個(gè)Topology 一般由若干Spout 和Bolt 組成,不同的組件之間通過數(shù)據(jù)流Stream 產(chǎn)生聯(lián)系,其中Spout 是消息的生產(chǎn)者,其可以從不同的數(shù)據(jù)源讀取數(shù)據(jù),比如消息中間件Kafka、RocketMq,也支持讀取文件、數(shù)據(jù)庫和網(wǎng)絡(luò)數(shù)據(jù)等[16]。Bolt 是處理數(shù)據(jù)的組件,即從上一級組件(Spout 或Bolt)獲取Tuple(Stream 的最小組成單元),經(jīng)過處理加工生成新的Tuple傳遞給下一級組件。上下級組件通過訂閱的方式?jīng)Q定數(shù)據(jù)的流向,常用的分組策略有以下幾種:

(1)Shuffle Grouping:隨機(jī)分組,通過輪詢的方式,將Tuple均分給bolt task。

(2)Fields Grouping:按字段分組,將具有相同field-Name的Tuple分給同一個(gè)Bolt組件。

(3)All Grouping:廣播發(fā)送,對于每一個(gè)Tuple,所有Bolt組件都會收到。

(4)Global Grouping:全局分組,把上游組件產(chǎn)生的Tuple 分配給同一個(gè) bolt task 去處理,一般為 task id 最低的task。

Topology的總體結(jié)構(gòu)如圖2所示。

圖2 Storm計(jì)算框架示例

4 基于Storm的EEMD并行分解算法

EEMD 算法是通過添加不同的白噪聲形成不同的染噪信號,不同的染噪信號分別進(jìn)行EMD分解,最終匯總求均值。染噪后的EMD分解過程是一個(gè)可以并行的階段,因此并行化EEMD 算法可以有兩種選擇,其一是直接將EMD 分解過程并行化,其二是先將原始信號分段再過程并行化。為了方便描述,把前者在Storm平臺上并行化的算法簡稱Spp-EEMD,后者簡稱Ssp-EEMD。下面詳細(xì)分析這兩種并行化策略。

4.1 Spp-EEMD

EEMD 的算法流程如圖3,可以看出原始信號每次添加不同白噪聲再進(jìn)行EMD分解的過程是互不影響的獨(dú)立過程。

圖3 EEMD算法流程圖

顯然,此種分解方法的Storm拓?fù)鋱D如圖4,染噪過程和EMD分解過程都是并行的。分解步驟如下:

(1)Spout 從Redis 中讀取原始信號,封裝成Tuple,發(fā)送到下一級。

(2)每一個(gè) AddNoise 組件通過 All Grouping 的分組策略從Spout 獲取原始信號,然后各自添加白噪聲生成新的染噪信號,生成新的Tuple。

(3)EMD分解組件訂閱AddNoise組件的數(shù)據(jù)流,通過Shuffle Grouping 分組方式使每個(gè)EMD 組件均分地處理上級組件發(fā)來的Tuple,保證EMD組件并行地分解染噪信號。每個(gè)EMD 組件生成的Tuple 為(id,arr),其中arr是一個(gè)二維數(shù)組[i][j](i表示篩選出IMF的個(gè)數(shù),j表示信號長度)。

(4)Average 組件通過Global Grouping 方式匯總所有EMD,即計(jì)算每層IMF的平均值,最后可以將結(jié)果寫入Redis或持久化到數(shù)據(jù)庫,用于后續(xù)的特征提取。

圖4 并行Spp-EEMD的拓?fù)浣Y(jié)構(gòu)

4.2 Ssp-EEMD

基于分段并行的EEMD 分解是比Spp-EEMD 更細(xì)粒度的并行算法,其通過對原始信號進(jìn)行分段,然后對子段信號進(jìn)行Spp-EEMD分解,最終將不同子段對應(yīng)層級的IMF合并即可。此種方法的并行度雖然提高了,但是信號的分段數(shù)的增加必然帶來更多的端點(diǎn)效應(yīng)。常用的解決端點(diǎn)效應(yīng)的方法有鏡像延拓法、極值點(diǎn)對稱延拓、多項(xiàng)式擬合延拓、匹配延拓等。其中,極值點(diǎn)對稱延拓算法較為簡單,在鏡像延拓的基礎(chǔ)上進(jìn)行了端點(diǎn)是否極值點(diǎn)的判斷,可以提高準(zhǔn)確性,同時(shí)只需要將原有的極值點(diǎn)向外延拓幾個(gè)周期即可,顯著減少了運(yùn)算量,可以保證在Storm中較低的處理時(shí)延。

Ssp-EEMD 算法是基于Spp-EEMD 的,拓?fù)浣Y(jié)構(gòu)如圖5,可以看出Spp-EEMD作為Ssp-EEMD的子過程,用于處理原始信號切分后的子段。

圖5 Ssp-EEMD算法拓?fù)鋱D

Ssp-EEMD進(jìn)一步提高了EEMD算法的并行度,但是更細(xì)粒度的數(shù)據(jù)劃分可能導(dǎo)致Storm 節(jié)點(diǎn)間通信量的增加。此種方法更適合信號長度較長的情況,分解步驟如下:

(1)Spout 組件讀取Redis 中的原始信號x,發(fā)送至Split組件。

(2)Split 組件將原始信號劃分為等長數(shù)據(jù)段,共n段,為了保證最終Joint組件合并時(shí)信號的有序性,Splite發(fā)出的Tuple 應(yīng)為(i,arr),其中一維數(shù)組arr 為信號子段,Tuple 的id 值i為該子段在原始信號中的相對位置序號,i=1,2,…,n。

圖6 原始信號分段處理示意圖

(3)Extend 為延拓組件,采用極值點(diǎn)延拓的處理方式減少端點(diǎn)效應(yīng)的影響。通過Shuffle Grouping的分組方式,保證裁切后的子段平均分配到不同的Extend節(jié)點(diǎn)處理。

(4)進(jìn)入Spp-EEMD 的處理過程,該階段需要特別注意的是Average過程。

①這里以原始信號的第一個(gè)子段為例,如圖6,子段1 經(jīng)過延拓和染噪過程形成子段1 的一組染噪信號arr_i(i=1,2,…,m),對每個(gè)染噪信號arr_i進(jìn)行EMD分解,生成一組IMF存儲在二維數(shù)組imf_arr_i中。

②EMD分解過后,將imf_arr_i封裝為Tuple發(fā)出,由于Ssp-EEMD 將原始信號分為多個(gè)子段,使用Spp-EEM 中的單個(gè)Average 組件策略已經(jīng)滿足不了算法的并發(fā)性能。因此,Ssp-EEMD 算法需設(shè)置多個(gè)Average組件同時(shí)計(jì)算不同子段產(chǎn)生的IMF的均值。Average組件的分組策略應(yīng)為Fields Grouping,以保證同一個(gè)子段的 imf_arr_i(i=1,2,…,m) 被同一個(gè)Average 組件接收,Average 最終產(chǎn)生的 Tuple 為 (a,imf_arr),其中a為子段序號,二維數(shù)組imf_arr 為該子段經(jīng)EEMD 分解產(chǎn)生的一組IMF。

(5)Spp-EEMD處理完之后,Cut組件可采用Shuffle Grouping 隨機(jī)分組方式對imf_arr 兩端進(jìn)行裁切,保證IMF與子段長度相同。

(6)Joint 組件采用 Global Grouping 方式對不同子段的IMF按子段序號進(jìn)行拼接,最終輸出一個(gè)二維數(shù)組Array,維數(shù)為m×L,其中m是IMF 的層數(shù),L是IMF信號的長度,與原始信號保持一致。該Joint 過程是串行過程,至此信號x的EEMD處理結(jié)束。

4.3 并行EEMD的數(shù)據(jù)流處理的優(yōu)化策略

上述兩種基于Storm 的并行EEMD 算法都是針對單次讀入一批數(shù)據(jù)點(diǎn)作為原始信號進(jìn)行EEMD 分解,Ssp-EEMD的Average組件和Spp-EEMD中的Joint組件等這些都是并行度為1 的匯總型計(jì)算組件。在Storm中,并行度為1意味著計(jì)算過程只在集群中的一個(gè)節(jié)點(diǎn)中運(yùn)行,其他節(jié)點(diǎn)會因?yàn)榭臻e造成資源浪費(fèi)。然而在實(shí)際生產(chǎn)環(huán)境中,Storm的Spout組件會連續(xù)不斷地從消息隊(duì)列中拉取待分解原始信號段進(jìn)行處理,而不是等待一個(gè)原始信號段處理完畢才開始拉取另一個(gè)。因此,拓?fù)渲心骋粫r(shí)間點(diǎn)就有多個(gè)原始信號在同時(shí)分解,在設(shè)置匯總型組件時(shí)就可以設(shè)置多并發(fā),用來同時(shí)匯總不同批次原始信號的分解結(jié)果,以提高系統(tǒng)的吞吐量。

在解決了并行度的問題后,還需考慮集群的計(jì)算能力。如果Spout 組件無限制地讀入數(shù)據(jù)、發(fā)送Tuple,也就是數(shù)據(jù)發(fā)送得快,處理得慢,會導(dǎo)致大量Tuple 堆積,造成線程阻塞,嚴(yán)重的話可能導(dǎo)致系統(tǒng)隊(duì)列溢出。常見的方法就是設(shè)置Spout 每讀入一個(gè)數(shù)據(jù)就休眠一段時(shí)間,通過在nextTuple()的方法體中設(shè)置Thread.sleep(long millis)即可。還有一種方法就是通過設(shè)置Storm的maxSpoutPending屬性值為k,即spout task上面最多可以有k個(gè)沒有處理完的Tuple(沒有ack/failed)。當(dāng)未處理完成的Tuple數(shù)量達(dá)到k時(shí),Spout task將不再調(diào)用nextTuple繼續(xù)發(fā)送數(shù)據(jù)。設(shè)置該屬性是通過在main方法中調(diào)用如下代碼:

Config conf=new Config();

conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING,k);其中conf 為Storm 的配置對象,用來配置Storm 集群和Storm 拓?fù)渖纤锌赡艿呐渲玫某A?。在?shí)際應(yīng)用中,如果k值過小,則會導(dǎo)致某些工作節(jié)點(diǎn)算力的浪費(fèi),因此需要根據(jù)集群的計(jì)算能力與任務(wù)的復(fù)雜度設(shè)置合適的k值,才可以保障集群的高效運(yùn)行。

5 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果分析

5.1 實(shí)驗(yàn)環(huán)境

為了驗(yàn)證第3 章提出的并行EEMD 分解算法的效果,在集群環(huán)境下搭建Storm集群,各節(jié)點(diǎn)的配置如表1。配置環(huán)境變量,并且安裝完Storm套件后,同時(shí)安裝Redis充當(dāng)實(shí)驗(yàn)數(shù)據(jù)源。

表1 Storm集群配置表

5.2 實(shí)驗(yàn)方案設(shè)計(jì)

Storm 的多語言協(xié)議支持各種編程語言去實(shí)現(xiàn)Spout 和Bolt 組件,本實(shí)驗(yàn)中采用比較常見的Java 去實(shí)現(xiàn)上文中介紹的兩種并行EEMD 分解算法以及Storm的處理邏輯,然后根據(jù)運(yùn)行結(jié)果分析比較兩種算法。

實(shí)驗(yàn)數(shù)據(jù)來自幾種常見的放電模型收集到的數(shù)據(jù),信號的采集周期與工頻周期一致,采樣頻率5 MHz,采集頻帶為40~300 kHz。實(shí)驗(yàn)中為了模擬數(shù)據(jù)流,預(yù)先根據(jù)仿真實(shí)驗(yàn)需要的信號長度將采集到的數(shù)據(jù)以String類型存放在Redis中。Spout組件讀取Redis中的數(shù)據(jù)并利用Java自帶的split()函數(shù)進(jìn)行字符串的切分,然后通過類型轉(zhuǎn)換為float 數(shù)組。但是由于Tuple 的value 默認(rèn)只支持Byte 數(shù)組,因此需要自定義一個(gè)數(shù)據(jù)傳輸類將float數(shù)組封裝進(jìn)去,然后在配置文件storm.yaml注冊該類聲明序列化,這樣就可以實(shí)現(xiàn)在task之間傳遞自定義的數(shù)據(jù)類型。

為了方便比較兩種并行策略的分解速度,統(tǒng)一將染噪次數(shù)Ne設(shè)置為50,同時(shí)將IMF 的篩選次數(shù)設(shè)為10,以避免篩選IMF 的停止準(zhǔn)則對分解速度造成影響。對于分段并行的Ssp-EEMD算法,設(shè)置分段數(shù)為10。在批量處理實(shí)驗(yàn)中,通過設(shè)置maxSpoutPending以防止Storm系統(tǒng)隊(duì)列溢出。maxSpoutPending 的值通過實(shí)驗(yàn)選取,之所以沒有使用線程休眠的方式是由于集群的處理能力并不是恒定的,可能受到外界突發(fā)狀況的影響,當(dāng)某一階段的Bolt 組件出現(xiàn)數(shù)據(jù)擁堵時(shí),Spout 的數(shù)據(jù)發(fā)送速度不變會導(dǎo)致?lián)砣膼夯?,最終使程序無法正常運(yùn)行,設(shè)置maxSpoutPending的方法可以有效避免該問題。

為了更好地利用CPU 資源,需要根據(jù)任務(wù)的復(fù)雜程度設(shè)置組件的并行度。同時(shí)考慮到Storm 集群自動(dòng)負(fù)載均衡的特點(diǎn),需要將并行度設(shè)為工作節(jié)點(diǎn)個(gè)數(shù)的倍數(shù),即5 的整數(shù)倍。在本實(shí)驗(yàn)中對于染噪、延拓這類復(fù)雜度較低的任務(wù),將組件的并行度設(shè)為10。而對于較為復(fù)雜的EMD 分解組件,設(shè)置并行度為30。組件的并行度需要在main方法中設(shè)置,以Spp-EEMD為例,代碼如下:

TopologyBuilder tb=new TopologyBuilder();

tb.setSpout("spout",new Spout(),2);//并行度為2

tb.setBolt("add_noise_bolt",new AddNoiseBolt(),10).allGrouping("spout");//染噪

tb.setBolt("emd_bolt",new EMDBolt(),30).shuffleGrouping("add_noise_bolt");//EMD分解

tb.setBolt("average_bolt",new AverageBolt(),10).global-Grouping("emd_bolt");//求IMF均值

Config conf=new Config();//創(chuàng)建拓?fù)渑渲?/p>

conf.setNumWorkers(20);//設(shè)置工作進(jìn)程數(shù)量

在本實(shí)驗(yàn)中,共設(shè)置了20個(gè)Worker(工作進(jìn)程),一個(gè)Worker 就是一個(gè)jvm 虛擬機(jī)進(jìn)程,組件并行度10 和30即為Executor(線程)的個(gè)數(shù)。Executor運(yùn)行在Worker中,默認(rèn)情況下一個(gè)Executor 中運(yùn)行一個(gè)Task,三者的關(guān)系如圖7所示。Storm的負(fù)載均衡機(jī)制會將Worker和Executor 平均地分配給集群中的Supervisor 工作節(jié)點(diǎn),使每個(gè)節(jié)點(diǎn)的計(jì)算資源都得到充分利用。

圖7 Worker、Executor和Task之間的關(guān)系

5.3 實(shí)驗(yàn)結(jié)果與分析

4.3 節(jié)提到通過設(shè)置maxSpoutPending 值來提高并行EEMD 算法對數(shù)據(jù)流處理的效率,但是maxSpout-Pending 需要根據(jù)Storm 集群的算力進(jìn)行合理的設(shè)置。圖8 是在待處理數(shù)據(jù)為200 條,數(shù)據(jù)長度為10 000 的條件下記錄的不同maxSpoutPending對應(yīng)的處理時(shí)間。從圖中可以看出,兩種算法分別在50 和60 左右取得最優(yōu)值。在最優(yōu)值的左側(cè)因?yàn)槲闯浞掷盟械乃懔Γ詴S著maxSpoutPending的增加而處理時(shí)間變短。在最優(yōu)值的右側(cè)由于集群處理能力和內(nèi)存的限制,導(dǎo)致線程擁塞,處理速度反而變慢,當(dāng)達(dá)到150時(shí),兩種算法由于系統(tǒng)隊(duì)列溢出都無法正常運(yùn)行。因此兩種算法的max-SpoutPending值取其各自的最優(yōu)值,即可最大程度發(fā)揮算法的處理能力。與此同時(shí),由于集群的處理能力是固定不變的,當(dāng)信號長度成倍數(shù)增加時(shí),maxSpoutPending值也應(yīng)減少相應(yīng)的倍數(shù),例如信號長度為20 000 時(shí),兩種算法的maxSpoutPending值應(yīng)分別設(shè)為25和30。

圖8 maxSpoutPending值對批量處理的影響

圖9 記錄了幾種方法在分解不同長度信號時(shí)所花費(fèi)的時(shí)間。其中標(biāo)注為Java的曲線是在JVM(Java Virtual Machine)下執(zhí)行的,為了充分利用多CPU 核心,EMD 分解階段采用的是 Java 的 ThreadPoolExecutor 線程池技術(shù)來實(shí)現(xiàn)多并發(fā)。Local Mode 為Storm 在本地模式下執(zhí)行(即單點(diǎn)執(zhí)行)。可以看出兩者的執(zhí)行時(shí)間比較相近,Local Mode由于Storm的ack機(jī)制和tuple發(fā)送機(jī)制等,時(shí)間比Java 方式稍長一點(diǎn)。Spp-EEMD 和Ssp-EEMD 兩種方法的時(shí)間曲線存在交點(diǎn)k(15

圖9 數(shù)據(jù)運(yùn)行時(shí)間

圖10 為兩種算法在批量處理中的加速比,并行算法的加速比最優(yōu)的情況下是隨著集群節(jié)點(diǎn)數(shù)的增加呈線性變化。但考慮到Storm 集群間的通信協(xié)調(diào)和序列化的Tuple 在節(jié)點(diǎn)間傳遞花費(fèi)一些時(shí)間,因此實(shí)際效率會低一些。Ssp-EEMD算法具有更高的并行度,因此具有較Spp-EEMD更高的加速比,更適合做集群的擴(kuò)展。

圖10 兩種并行算法加速比

表2 是兩種算法分別以10 000 和20 000 點(diǎn)為單條數(shù)據(jù)長度處理不同大小的數(shù)據(jù)集所用的時(shí)間對比。在信號長度為10 000的情況下,基于分段的Ssp-EEMD算法在處理30 MB 以上大小的數(shù)據(jù)集時(shí)有較小的時(shí)間優(yōu)勢,但在20 000 信號長度下Ssp-EEMD 算法明顯優(yōu)于Spp-EEMD。造成這種現(xiàn)象的主要原因是當(dāng)信號較長時(shí),EMD分解組件因其本身算法復(fù)雜度較大,花費(fèi)時(shí)間較長,造成數(shù)據(jù)流擁堵于該階段,而其他組件則處于相對閑置狀態(tài)。Ssp-EEMD 算法通過分段處理將信號變短,雖然比Spp-EEMD增加了子信號端點(diǎn)效應(yīng)處理的時(shí)間花費(fèi),但是較短信號在EMD 分解階段花費(fèi)的時(shí)間也相對較少,緩解了數(shù)據(jù)流的擁塞狀況。因此在信號的批量處理中,數(shù)據(jù)流在Ssp-EEMD的整個(gè)處理流程中分布較均勻,各級組件的線程都處于運(yùn)行態(tài),CPU的利用率比Spp-EEMD 更高,使得基于分段的并行算法Ssp-EEMD在批量處理場景下處理長信號有更大的吞吐量。

表2 不同EEMD批量執(zhí)行時(shí)長對比 min

6 結(jié)束語

大數(shù)據(jù)技術(shù)的發(fā)展使時(shí)序信號的在線快速處理成為可能,本文基于Storm提出了兩種并行EEMD分解算法。通過設(shè)置Bolt組件的并行度,將待處理數(shù)據(jù)封裝為Tuple 發(fā)送給處理組件,實(shí)現(xiàn)EEMD 算法的并行求解。通過實(shí)驗(yàn)驗(yàn)證了兩種并行分解算法的可用性以及各自適用的場景,在處理單個(gè)信號時(shí),基于分段的Ssp-EEMD信號分解算法比Spp-EEMD 算法有更高的并行度和更好的加速比,在處理長信號時(shí)效率更高,而Spp-EEMD更適合10 000以內(nèi)短信號的處理。在批量處理場景下,信號較長或者是數(shù)據(jù)量較大都推薦使用Ssp-EEMD 算法,該算法吞吐量大,處理速度更快。但是Ssp-EEMD會由于信號分段引入端點(diǎn)效應(yīng),如果要求準(zhǔn)確率,則只能使用Spp-EEMD 分解方式。較傳統(tǒng)的串行EEMD 算法,兩種基于Storm的并行EEMD算法在處理速度上都具有較大的優(yōu)勢,且可以通過擴(kuò)展Storm的集群規(guī)模來進(jìn)一步提升處理速度。

猜你喜歡
分段集群組件
無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
能源工程(2022年2期)2022-05-23 13:51:50
一類連續(xù)和不連續(xù)分段線性系統(tǒng)的周期解研究
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設(shè)計(jì)
海上小型無人機(jī)集群的反制裝備需求與應(yīng)對之策研究
分段計(jì)算時(shí)間
一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
電子制作(2018年11期)2018-08-04 03:25:40
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
勤快又呆萌的集群機(jī)器人
3米2分段大力士“大”在哪兒?
太空探索(2016年9期)2016-07-12 10:00:04
于田县| 赣榆县| 扶风县| 久治县| 中西区| 岳普湖县| 礼泉县| 嘉兴市| 太谷县| 岳池县| 三穗县| 敦化市| 鄂尔多斯市| 垣曲县| 永兴县| 海晏县| 泉州市| 平舆县| 新宁县| 北碚区| 鄯善县| 台南市| 东辽县| 榆树市| 南皮县| 文安县| 潞城市| 工布江达县| 泾阳县| 南江县| 枣阳市| 东港市| 清涧县| 临沂市| 博湖县| 新田县| 吴桥县| 台州市| 鹤峰县| 稻城县| 紫云|