張瑞聰,任鵬程,房 凱,張衛(wèi)山
(中國(guó)石油大學(xué)(華東)計(jì)算機(jī)與通信工程學(xué)院,青島 266580)
隨著工業(yè)化、信息化的飛速發(fā)展,設(shè)備工藝越來(lái)越復(fù)雜,監(jiān)控、傳感器的廣泛部署使得設(shè)備的運(yùn)行狀態(tài)得以有效監(jiān)控[1].基于工業(yè)行業(yè)特性,工業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)顯現(xiàn)出規(guī)模大、類(lèi)型雜和價(jià)值密度不一致等特征[2],因此,相比傳統(tǒng)的大數(shù)據(jù),對(duì)具有以上特征的大數(shù)據(jù)分析處理更加困難.而且目前設(shè)備故障以發(fā)生故障后進(jìn)行報(bào)警的方式呈現(xiàn),個(gè)別故障預(yù)測(cè)只能基于專(zhuān)家經(jīng)驗(yàn)[3]判斷,過(guò)度依賴(lài)于專(zhuān)家知識(shí).
本文結(jié)合當(dāng)前工業(yè)領(lǐng)域[4]發(fā)展面臨的問(wèn)題,設(shè)計(jì)了基于Hadoop環(huán)境的分布式物聯(lián)網(wǎng)設(shè)備狀態(tài)分析處理系統(tǒng),主要提供數(shù)據(jù)服務(wù)、數(shù)據(jù)分析和數(shù)據(jù)存儲(chǔ)的功能.通過(guò)分布式系統(tǒng)的構(gòu)建,有力地解決了當(dāng)前工業(yè)物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)規(guī)模大、設(shè)備數(shù)據(jù)類(lèi)型雜、設(shè)備數(shù)據(jù)價(jià)值密度不一等問(wèn)題,實(shí)現(xiàn)了工業(yè)物聯(lián)網(wǎng)設(shè)備運(yùn)行狀態(tài)的精準(zhǔn)診斷分析,有效提高生產(chǎn)效率、降低資源能源消耗.
近年來(lái),國(guó)內(nèi)外對(duì)物聯(lián)網(wǎng)設(shè)備狀態(tài)的分析和處理方面的研究已經(jīng)獲得了廣泛的應(yīng)用,尤其是在設(shè)備運(yùn)行狀態(tài)監(jiān)控和故障診斷方面.2009年,曾凡琳等雙層監(jiān)控系統(tǒng)框架下的帶有時(shí)延和丟包的子系統(tǒng)故障檢測(cè)方法[5],減小了延時(shí)與丟包對(duì)故障檢測(cè)性能的影響[6].2019年,焦亞軍等利用PLC和傳感器設(shè)計(jì)了一套帶式運(yùn)送機(jī)故障檢測(cè)和預(yù)防系統(tǒng),隨時(shí)檢測(cè)設(shè)備故障點(diǎn)[7],若出現(xiàn)故障信號(hào)立刻發(fā)出報(bào)警,提示維修.遺憾的是以上系統(tǒng)均未考慮對(duì)海量數(shù)據(jù)處理時(shí)性能方面的問(wèn)題.
Hadoop是一個(gè)能夠讓用戶(hù)輕松架構(gòu)和使用的分布式計(jì)算平臺(tái).用戶(hù)可以輕松地在Hadoop上開(kāi)發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序[8].它主要有高可靠性、高擴(kuò)展性、高效性、高容錯(cuò)性的優(yōu)點(diǎn).
根據(jù)Hadoop平臺(tái)的特點(diǎn),2013年,劉樹(shù)仁等為了處理海量數(shù)據(jù),設(shè)計(jì)并實(shí)現(xiàn)了基于Hadoop技術(shù)的數(shù)據(jù)存儲(chǔ)系統(tǒng)[9],驗(yàn)證了該系統(tǒng)具有分布式海量存儲(chǔ)及高效查詢(xún)的優(yōu)勢(shì),適合智能電網(wǎng)環(huán)境下設(shè)備狀態(tài)監(jiān)測(cè)數(shù)據(jù)的存儲(chǔ);2014年,Duan等通過(guò)智能化分析能提出新的云計(jì)算數(shù)據(jù)存儲(chǔ)管理模式,讓管理的效率更高、安全性更好、維護(hù)性更強(qiáng)[10].
盡管Hadoop在離線(xiàn)復(fù)雜大數(shù)據(jù)處理方面表現(xiàn)良好,但支持的機(jī)器學(xué)習(xí)算法卻相當(dāng)有限,為了更好地利用Python數(shù)據(jù)處理包做大數(shù)據(jù)處理,本文引入了Dask計(jì)算工具.Dask是一個(gè)由Python語(yǔ)言支撐的靈活的分布式計(jì)算[11]工具,主要具有以下兩個(gè)特點(diǎn):第一為動(dòng)態(tài)任務(wù)分配,第二具有大數(shù)據(jù)處理能力.Dask分布式計(jì)算提供并行化Numpy array和Pandas DataFrame類(lèi)的接口,同時(shí)提供任務(wù)分配接口,更加便捷地將分布式計(jì)算整合到項(xiàng)目之中.Dask采用原生態(tài)訪(fǎng)問(wèn)pydata堆棧,在完全Python環(huán)境中啟動(dòng)分布式計(jì)算,能夠保證以最小的性能開(kāi)銷(xiāo)和較低的延遲情況下快速計(jì)算[12].此外Dask既能運(yùn)行于千個(gè)節(jié)點(diǎn)上做分布式計(jì)算,也能運(yùn)行于單臺(tái)筆記本上,且在響應(yīng)方面基于交互式設(shè)計(jì)理念,為開(kāi)發(fā)者和使用者提供快速的反饋和精準(zhǔn)的診斷.
本文結(jié)合Hadoop和Dask分布式計(jì)算框架,設(shè)計(jì)了一種基于Hadoop環(huán)境的分布式物聯(lián)網(wǎng)狀態(tài)分析和處理系統(tǒng),系統(tǒng)能夠高效地處理大批量數(shù)據(jù)并實(shí)時(shí)準(zhǔn)確預(yù)測(cè)設(shè)備的運(yùn)行狀態(tài).
根據(jù)相關(guān)需求分析,本系統(tǒng)采用數(shù)據(jù)層、服務(wù)層、通訊層和表現(xiàn)層四層架構(gòu),具體形式如圖1所示.
圖1 系統(tǒng)架構(gòu)
結(jié)合四層架構(gòu)的設(shè)計(jì)方式,系統(tǒng)由3個(gè)模塊組成:數(shù)據(jù)服務(wù)模塊、數(shù)據(jù)分析模塊和數(shù)據(jù)存儲(chǔ)模塊.
數(shù)據(jù)服務(wù)模塊采用Web-Server,避免一臺(tái)主機(jī)多環(huán)境相互影響而導(dǎo)致的程序故障問(wèn)題[13].以雙向服務(wù)的方式實(shí)現(xiàn)數(shù)據(jù)的推拉結(jié)合,在保證高速數(shù)據(jù)傳輸?shù)耐瑫r(shí)實(shí)現(xiàn)數(shù)據(jù)異常處理、消息丟失重發(fā)、消息“斷點(diǎn)續(xù)傳”,保證了雙向數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性.該模塊不僅從云平臺(tái)拉取數(shù)據(jù),還可以將數(shù)據(jù)預(yù)測(cè)的結(jié)果反饋回云平臺(tái).此外數(shù)據(jù)服務(wù)模塊和數(shù)據(jù)處理層是完成隔離,兩層中間采用Socket通信.
數(shù)據(jù)分析模塊在服務(wù)層實(shí)現(xiàn),其中數(shù)據(jù)處理和特征提取選擇基于Dask分布式計(jì)算框架,預(yù)測(cè)基于Keras框架[14].數(shù)據(jù)處理的主要功能有:數(shù)據(jù)缺失填充、數(shù)據(jù)異常檢測(cè)和替換、數(shù)據(jù)歸一化和數(shù)據(jù)降維處理等.特征提取和選擇模塊主要功能為數(shù)據(jù)特征提取和選擇.數(shù)據(jù)預(yù)測(cè)主要功能為預(yù)測(cè)算法的訓(xùn)練、測(cè)試與運(yùn)行.此外該模塊還支持模型更換(支持?jǐn)?shù)據(jù)歸一化算法替換、數(shù)據(jù)降維算法替換和異常檢測(cè)算法替換)和數(shù)據(jù)持久化等功能.
數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)模型保存、預(yù)測(cè)結(jié)果保存和提取特征保存等數(shù)據(jù)存儲(chǔ)服務(wù).由于數(shù)據(jù)量會(huì)隨著時(shí)間而不斷增加為此我們必須考慮到數(shù)據(jù)量增加導(dǎo)致得硬盤(pán)不足問(wèn)題,結(jié)合服務(wù)實(shí)時(shí)訪(fǎng)問(wèn)需求最終采用HBase作為數(shù)據(jù)存儲(chǔ),另外采用HDFS[15]作為存儲(chǔ)基礎(chǔ).
本節(jié)將講解數(shù)據(jù)服務(wù)模塊、數(shù)據(jù)分析模塊和數(shù)據(jù)存儲(chǔ)模塊的詳細(xì)設(shè)計(jì).系統(tǒng)詳細(xì)設(shè)計(jì)圖如圖2所示.
圖2 系統(tǒng)詳細(xì)設(shè)計(jì)圖
2.2.1 數(shù)據(jù)服務(wù)模塊設(shè)計(jì)
數(shù)據(jù)服務(wù)模塊定義了數(shù)據(jù)檢查機(jī)制、數(shù)據(jù)重傳協(xié)議和數(shù)據(jù)傳輸格式.數(shù)據(jù)發(fā)送方會(huì)主動(dòng)將每一臺(tái)設(shè)備所有傳感器數(shù)據(jù)實(shí)時(shí)發(fā)送給Web-server服務(wù)器[16],數(shù)據(jù)格式如下:
上述數(shù)據(jù)傳送格式為json,數(shù)據(jù)中包含設(shè)備名稱(chēng)和數(shù)據(jù)(分別是狀態(tài)參數(shù)和設(shè)備數(shù)據(jù))以及校驗(yàn)碼Hash_MD5,且MD5計(jì)算值是SensorData元素的字符串計(jì)算的MD5值.當(dāng)SensorData數(shù)據(jù)發(fā)送缺失或者數(shù)據(jù)“污染”時(shí)MD5計(jì)算結(jié)果將會(huì)發(fā)生變化,因此可以確定數(shù)據(jù)穩(wěn)定性和可靠性.當(dāng)數(shù)據(jù)計(jì)算MD5匹配/不匹配都會(huì)向數(shù)據(jù)發(fā)送方發(fā)送數(shù)據(jù)狀態(tài),發(fā)送Json如下所示:
如上所示,當(dāng)數(shù)據(jù)傳輸中數(shù)據(jù)缺少或被干擾時(shí)返回為1,如果數(shù)據(jù)接收且數(shù)據(jù)完整性和準(zhǔn)確性良好則Megs會(huì)返回0,否則應(yīng)表示數(shù)據(jù)已接收但數(shù)據(jù)校驗(yàn)出錯(cuò),請(qǐng)求數(shù)據(jù)重發(fā).同時(shí)當(dāng)數(shù)據(jù)發(fā)送方在數(shù)據(jù)發(fā)送2秒后沒(méi)有收到數(shù)據(jù)確認(rèn)時(shí),數(shù)據(jù)發(fā)送方會(huì)立刻向數(shù)據(jù)接收端再次發(fā)送數(shù)據(jù),同時(shí)再次等待數(shù)據(jù)確認(rèn)消息.
當(dāng)網(wǎng)絡(luò)傳輸出現(xiàn)問(wèn)題時(shí)內(nèi)存數(shù)據(jù)會(huì)進(jìn)行暫時(shí)數(shù)據(jù)存儲(chǔ),其中數(shù)據(jù)持久化為雙端持久化,以便網(wǎng)絡(luò)恢復(fù)時(shí)能迅速重建程序,同時(shí)確保內(nèi)存中數(shù)據(jù)不會(huì)丟失,從而避免網(wǎng)絡(luò)故障帶來(lái)的數(shù)據(jù)部分丟失問(wèn)題[17].具體實(shí)現(xiàn)為數(shù)據(jù)發(fā)送端會(huì)實(shí)時(shí)保存數(shù)據(jù)傳輸時(shí)間點(diǎn)并持久化,數(shù)據(jù)傳輸時(shí)間點(diǎn)是記錄當(dāng)前數(shù)據(jù)成功發(fā)送并且返回接受成功的數(shù)據(jù)時(shí)間點(diǎn)(數(shù)據(jù)發(fā)送后且收到接收端數(shù)據(jù)Megs為0的確認(rèn));數(shù)據(jù)接收端會(huì)實(shí)時(shí)持久化數(shù)據(jù)組,具體流程為在接收端接收到數(shù)據(jù)時(shí)并不會(huì)立刻返回?cái)?shù)據(jù)確認(rèn),首先將數(shù)據(jù)添加到內(nèi)存數(shù)據(jù)數(shù)組中(添加之前會(huì)進(jìn)行數(shù)據(jù)是否存在判斷,排除數(shù)據(jù)接收但確認(rèn)消息丟失情況)并將其持久化到數(shù)據(jù)庫(kù)中,然后再返回?cái)?shù)據(jù)確認(rèn)消息[18].
將預(yù)測(cè)結(jié)果反饋回云平臺(tái)時(shí),由于Web_server和預(yù)測(cè)模塊不是運(yùn)行于同一臺(tái)服務(wù)器,為降低由數(shù)據(jù)寫(xiě)入和讀取帶來(lái)的延遲,引入模塊之間通信.本論文采用Socket通信方法[19],主要實(shí)現(xiàn)兩個(gè)方法Socket_server和Socket_client.Socket_server為Socketserver端負(fù)責(zé)將驗(yàn)證正確的數(shù)據(jù)實(shí)時(shí)發(fā)送,而預(yù)測(cè)模塊為Socket_client負(fù)責(zé)接收數(shù)據(jù),以及將預(yù)測(cè)結(jié)果返回給Web_server.Socket通信JSON格式設(shè)計(jì)如下所示,傳輸數(shù)據(jù)只有設(shè)備名稱(chēng)和設(shè)備數(shù)據(jù)(設(shè)備狀態(tài)數(shù)據(jù)未使用).預(yù)測(cè)數(shù)據(jù)返回的JSON格式傳輸數(shù)據(jù)只有設(shè)備名稱(chēng)、數(shù)據(jù)時(shí)間和預(yù)測(cè)狀態(tài).
2.2.2 數(shù)據(jù)分析模塊設(shè)計(jì)
數(shù)據(jù)分析模塊主要基于Dask分布式計(jì)算框架,該分布式計(jì)算框架能有效支持大量機(jī)器學(xué)習(xí)算法并通過(guò)高效的并行計(jì)算縮短計(jì)算時(shí)間.同時(shí)引入了計(jì)算資源調(diào)度DRB方法,保證數(shù)據(jù)預(yù)處理算法和預(yù)測(cè)算法的高效運(yùn)行和分布式計(jì)算的穩(wěn)定性.下面主要介紹分布式計(jì)算框架的搭建和節(jié)點(diǎn)調(diào)度方案的實(shí)現(xiàn).
本分布式計(jì)算平臺(tái)基于Dask技術(shù)來(lái)搭建,通過(guò)搭建一臺(tái)主節(jié)點(diǎn)多臺(tái)從節(jié)點(diǎn)和多個(gè)備用節(jié)點(diǎn)的組成最終的分布式計(jì)算平臺(tái),每個(gè)節(jié)點(diǎn)之間采用TCP通信,高速并行化計(jì)算[20]每次主節(jié)點(diǎn)分發(fā)的計(jì)算請(qǐng)求.主節(jié)點(diǎn)名稱(chēng)、從節(jié)點(diǎn)名稱(chēng)和備用節(jié)點(diǎn)名稱(chēng)分別為Scheduler、Worker和Temp_Worker.
本分布式計(jì)算將由5臺(tái)機(jī)器組成,其中每臺(tái)機(jī)器包含4個(gè)節(jié)點(diǎn).因?yàn)镈ask分布式計(jì)算能在運(yùn)行時(shí)刻加入節(jié)點(diǎn),且當(dāng)節(jié)點(diǎn)加入后可以快速的從Dask主節(jié)點(diǎn)獲得計(jì)算任務(wù),平臺(tái)的設(shè)備信息都可以從設(shè)備的主機(jī)點(diǎn)獲取,信息讀取地址為:http://192.168.1.101:端口/workers,端口號(hào)根據(jù)實(shí)際信息修改訪(fǎng)問(wèn)端口號(hào).
節(jié)點(diǎn)調(diào)度方案如圖3所示,當(dāng)設(shè)備計(jì)算資源過(guò)于匱乏時(shí)Temp_Worker將持續(xù)啟動(dòng)子線(xiàn)程并加入分布式計(jì)算系統(tǒng)中,其中計(jì)算資源匱乏判斷條件為整體資源使用率情況[21].
圖3 DRB節(jié)點(diǎn)調(diào)度方案
計(jì)算資源匱乏具體的判斷條件如式(1)和式(2)所示,C表示分布式計(jì)算平臺(tái)整體CPU計(jì)算資源大小,ci表示其中一臺(tái)機(jī)器某個(gè)節(jié)點(diǎn)的CPU使用率,M表示分布式計(jì)算平臺(tái)整體內(nèi)存大小,mi表示其中一臺(tái)子節(jié)點(diǎn)的內(nèi)存使用率.mt表示在t時(shí)刻分布式計(jì)算平臺(tái)整體內(nèi)存使用均值即如下公式所示:
式中,n表示設(shè)備總的節(jié)點(diǎn)數(shù)量不包含主節(jié)點(diǎn).ct在時(shí)間點(diǎn)t時(shí)刻分布式計(jì)算平臺(tái)的CPU整體使用率[22].當(dāng)且僅當(dāng)任何一個(gè)整體使用率c超過(guò)0.8(計(jì)算機(jī)超頻,不同機(jī)器可能不一樣)或者m超過(guò)0.8時(shí)且該值維持10秒以上,待加入節(jié)點(diǎn)將啟動(dòng)Worker并加入Scheduler.此外當(dāng)設(shè)備資源過(guò)剩時(shí)我們將關(guān)閉部分啟動(dòng)節(jié)點(diǎn),具體資源判斷當(dāng)ct和mt同時(shí)在持續(xù)5秒內(nèi)資源利用率都低于在0.3時(shí)備用節(jié)點(diǎn)進(jìn)程將終止.
此外在多次實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn)部分節(jié)點(diǎn)可能會(huì)出現(xiàn)死機(jī)或者內(nèi)存使用率抵達(dá)使用上限,導(dǎo)致節(jié)點(diǎn)癱瘓或節(jié)點(diǎn)進(jìn)程阻塞問(wèn)題.為此根據(jù)分布式計(jì)算的任務(wù)備份的基本原理(Dask的Scheduler在管理節(jié)點(diǎn)時(shí),如果節(jié)點(diǎn)丟失時(shí),主節(jié)點(diǎn)會(huì)將丟失節(jié)點(diǎn)任務(wù)分發(fā)給其它節(jié)點(diǎn)執(zhí)行),節(jié)點(diǎn)進(jìn)程阻塞判斷方案將根據(jù)mi單個(gè)節(jié)點(diǎn)內(nèi)存使用率和ci單個(gè)節(jié)點(diǎn)CPU使用率.判斷條件為當(dāng)且當(dāng)ci一直大于1.2時(shí)且維持利用率不變20 s以上時(shí)節(jié)點(diǎn)線(xiàn)程將會(huì)被終止,并立刻再次啟動(dòng)該節(jié)點(diǎn)進(jìn)程.
2.2.3 數(shù)據(jù)存儲(chǔ)模塊設(shè)計(jì)
數(shù)據(jù)存儲(chǔ)主要包括設(shè)備數(shù)據(jù)存儲(chǔ)、預(yù)測(cè)數(shù)據(jù)存儲(chǔ)和中間模式存儲(chǔ).為保證計(jì)算的高效性和穩(wěn)定性,存儲(chǔ)服務(wù)器采用基于Hadoop分布式數(shù)據(jù)存儲(chǔ)的HBase數(shù)據(jù)庫(kù)[23],在盡可能保證數(shù)據(jù)安全的同時(shí)提供便捷的存儲(chǔ)擴(kuò)展.
數(shù)據(jù)存儲(chǔ)在HBase中有兩種表結(jié)構(gòu)設(shè)計(jì)模式,寬表設(shè)計(jì)模式和高表設(shè)計(jì)模式[24].寬表設(shè)計(jì)模式和高表設(shè)計(jì)模式根據(jù)數(shù)據(jù)量大小的時(shí)間消耗如表1所示,其中高表設(shè)計(jì)模式的時(shí)間消耗平均低于寬表設(shè)計(jì)模式百分之五十以上.因此本文選擇高表設(shè)計(jì)模式,通過(guò)減少列簇,將查詢(xún)信息插入到Rowkey中來(lái)降低查詢(xún)時(shí)間.
根據(jù)某著名物聯(lián)網(wǎng)公司的數(shù)據(jù)分析,最終數(shù)據(jù)建表通過(guò)構(gòu)建三個(gè)數(shù)據(jù)列簇和一個(gè)Rowkey.Rowkey為數(shù)據(jù)識(shí)別的唯一標(biāo)識(shí)符,且數(shù)據(jù)查詢(xún)時(shí)間相對(duì)較快,因此Rowkey將采用設(shè)備名稱(chēng)和時(shí)間組成Rowkey設(shè)計(jì),在數(shù)據(jù)查詢(xún)時(shí)只需設(shè)備名稱(chēng)+(開(kāi)始時(shí)間-結(jié)束時(shí)間)即可查詢(xún)某一設(shè)備的多個(gè)時(shí)間段數(shù)據(jù).預(yù)測(cè)數(shù)據(jù)將存儲(chǔ)于第三個(gè)數(shù)據(jù)列簇中,預(yù)測(cè)數(shù)據(jù)列將采用yc作為標(biāo)識(shí).中間模式數(shù)據(jù)存儲(chǔ)構(gòu)建方式和預(yù)測(cè)數(shù)據(jù)存儲(chǔ)類(lèi)似,只需將列標(biāo)識(shí)修改為ts存儲(chǔ)于第四列簇中.表列簇設(shè)計(jì)如表2所示.
表1 寬表高表對(duì)比
表2 數(shù)據(jù)庫(kù)表設(shè)計(jì)
3 個(gè)列簇分別表示為原始數(shù)據(jù)存儲(chǔ)、轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)和預(yù)測(cè)設(shè)備狀態(tài)存儲(chǔ).Rowkey為索引只有一列(ssdjd_20180105125000_1中最后_1是為了避免時(shí)間軸既20180105125000出錯(cuò)從而無(wú)法通過(guò)加30秒定位上一個(gè)時(shí)間或下一個(gè)時(shí)間點(diǎn)數(shù)據(jù)),原始數(shù)據(jù)列簇包含137列,轉(zhuǎn)換數(shù)據(jù)包含8503列,預(yù)測(cè)設(shè)備狀態(tài)存儲(chǔ)設(shè)備的當(dāng)前狀態(tài),當(dāng)預(yù)測(cè)出設(shè)備狀態(tài)時(shí),該預(yù)測(cè)值為半小時(shí)后的設(shè)備狀態(tài),因此為維持預(yù)測(cè)p1與當(dāng)前時(shí)間軸一致性,引入內(nèi)存變量和持久化方法,在預(yù)測(cè)出數(shù)據(jù)時(shí)先暫且保存在該變量中,每當(dāng)數(shù)據(jù)超過(guò)30個(gè)時(shí)會(huì)進(jìn)行自動(dòng)數(shù)據(jù)存儲(chǔ).
HBase數(shù)據(jù)庫(kù)存儲(chǔ)軟硬件環(huán)境如表3所示,HBase存儲(chǔ)服務(wù)采用5臺(tái)服務(wù)器作為數(shù)據(jù)存儲(chǔ)服務(wù)器,其中152作為數(shù)據(jù)存儲(chǔ)的主節(jié)點(diǎn)Master同時(shí)也作為資源管理節(jié)點(diǎn),153~156作為子節(jié)點(diǎn)datanode為數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn).
表3 HBase數(shù)據(jù)庫(kù)軟硬件環(huán)境
為了驗(yàn)證系統(tǒng)的有效性,本文選擇某企業(yè)商業(yè)空調(diào)的傳感器數(shù)據(jù)進(jìn)行實(shí)驗(yàn),部分?jǐn)?shù)據(jù)展示如圖4所示.
系統(tǒng)可以得到蒸發(fā)器側(cè)進(jìn)水溫度、蒸發(fā)器側(cè)出水溫度、冷凝器側(cè)進(jìn)水溫度、冷凝器側(cè)出水溫度等44個(gè)不同特征的商業(yè)空調(diào)傳感器數(shù)據(jù).系統(tǒng)通過(guò)數(shù)據(jù)服務(wù)模塊從企業(yè)云平臺(tái)的得到維度為45的矩陣數(shù)據(jù),其中最后一列數(shù)據(jù)為設(shè)備的運(yùn)行狀態(tài)標(biāo)識(shí).
圖4 部分實(shí)驗(yàn)數(shù)據(jù)
數(shù)據(jù)分析模塊數(shù)據(jù)預(yù)處理功能主要包括數(shù)據(jù)的缺失填充、異常檢測(cè)和替換、數(shù)據(jù)歸一化和降維處理等.特征提取和選擇模塊主要功能為數(shù)據(jù)特征提取和選擇.數(shù)據(jù)預(yù)測(cè)主要功能為預(yù)測(cè)算法的訓(xùn)練、測(cè)試與運(yùn)行.
將系統(tǒng)分析結(jié)果進(jìn)行可視化如圖5所示,圖中橫坐標(biāo)表示時(shí)間序列,縱坐標(biāo)表示發(fā)生故障的概率.上方折線(xiàn)圖為預(yù)測(cè)結(jié)果,下方折線(xiàn)圖為真實(shí)設(shè)備狀態(tài)值.當(dāng)預(yù)測(cè)概率值大于0.5時(shí)系統(tǒng)將會(huì)發(fā)出警報(bào),提示設(shè)備將出現(xiàn)非正常運(yùn)行狀態(tài).從圖中可以看出,系統(tǒng)精確的預(yù)測(cè)出了設(shè)備的狀態(tài),并且這一預(yù)測(cè)為實(shí)時(shí)的預(yù)測(cè).
圖5 結(jié)果可視化展示
本次實(shí)驗(yàn)數(shù)據(jù)輸入基本單位為(4×2880)×13的矩陣數(shù)據(jù)即一個(gè)數(shù)據(jù)樣本.分布式計(jì)算包括數(shù)據(jù)預(yù)處理、特征提取和特征選擇過(guò)程,本測(cè)試將采用兩種測(cè)試條件;第一種為同一時(shí)間向分布式計(jì)算平臺(tái)發(fā)送多次任務(wù)請(qǐng)求,且任務(wù)請(qǐng)求計(jì)算內(nèi)容相同;第二種為同一時(shí)間向分布式計(jì)算平臺(tái)發(fā)送多次任務(wù)請(qǐng)求,且任務(wù)請(qǐng)求計(jì)算內(nèi)容不同.
第一種測(cè)試條件如表4所示,相同時(shí)間提交所有任務(wù)計(jì)算內(nèi)容相同.
表4 分布式計(jì)算測(cè)試結(jié)果1
從表4中可看出,同一時(shí)段提交任務(wù)數(shù)量有1、2、3、4、5、6、10,實(shí)驗(yàn)結(jié)果時(shí)間均為運(yùn)行100次耗時(shí)平均值.從表中可看出當(dāng)提交相同任務(wù)時(shí)計(jì)算平臺(tái)能合理的優(yōu)化計(jì)算任務(wù),并且不增加計(jì)算耗時(shí)即平臺(tái)能避免重復(fù)計(jì)算.
第二種測(cè)試條件如表5所示,相同時(shí)間提交所有任務(wù)計(jì)算內(nèi)容不同.
表5 分布式計(jì)算測(cè)試結(jié)果2
從表5中可看出當(dāng)提交任務(wù)數(shù)量上升時(shí)耗時(shí)也開(kāi)始逐漸上升,根據(jù)表中數(shù)據(jù)可看出當(dāng)該平臺(tái)可以并發(fā)處理多個(gè)任務(wù),且平均任務(wù)耗時(shí)為3 s左右.為保證任務(wù)能在有效時(shí)間內(nèi)獲得計(jì)算結(jié)果(數(shù)據(jù)采集間隔為30 s),該分布式計(jì)算平臺(tái)至多同時(shí)提交10個(gè)不同任務(wù).
本文設(shè)計(jì)了一種Hadoop環(huán)境下的分布式物聯(lián)網(wǎng)設(shè)備狀態(tài)分析處理系統(tǒng),能夠快速準(zhǔn)確地進(jìn)行設(shè)備狀態(tài)預(yù)測(cè).為了提高數(shù)據(jù)處理效率,數(shù)據(jù)預(yù)處理和特征提取方法完全基于Dask分布式計(jì)算框架,并根據(jù)實(shí)際分布式計(jì)算中遇到的節(jié)點(diǎn)阻塞問(wèn)題提出了DRB節(jié)點(diǎn)優(yōu)化方案,實(shí)現(xiàn)了分布式節(jié)點(diǎn)的智能啟動(dòng)、關(guān)閉和重啟.本系統(tǒng)的完成,實(shí)現(xiàn)了工業(yè)物聯(lián)網(wǎng)設(shè)備運(yùn)行狀態(tài)的精準(zhǔn)診斷分析,有效提高生產(chǎn)效率、降低資源能源消耗.