郭海波,宋 達,高翔宇,胡家銘,朱 進
(中國艦船研究院,北京 100101)
物聯(lián)網(wǎng)、大數(shù)據(jù)、數(shù)據(jù)挖掘是近幾年受到各行各業(yè)普遍關注的新概念。物聯(lián)網(wǎng)的目標就是將所有的設備進行連接,實現(xiàn)設備之間的通信與數(shù)據(jù)交換。物聯(lián)網(wǎng)概念與相關技術(shù)層出不窮,目前應用較為廣泛的物聯(lián)網(wǎng)平臺有EdgeX Foundry,NB-loT[1],LoRa等,物聯(lián)網(wǎng)的整體感知、可靠傳輸和智能處理可實現(xiàn)艦艇物與物、物與人的泛在連接。物聯(lián)網(wǎng)中需要進行大量的數(shù)據(jù)交換與數(shù)據(jù)處理工作,艦艇大數(shù)據(jù)具有4V特征[2],Volume(數(shù)據(jù)量大)、Velocity(速度快)、Variety(多樣化)、Value(價值密度低),艦艇物聯(lián)網(wǎng)中的大數(shù)據(jù),不僅精確涵蓋所有數(shù)據(jù),更加關注數(shù)據(jù)間的因果關系和相關關系,依托艦艇大數(shù)據(jù)平臺可對海量艦艇數(shù)據(jù)進行分布式存儲并為進一步的數(shù)據(jù)挖掘提供強大算力。數(shù)據(jù)挖掘是統(tǒng)計學的延伸,指通過機器學習、深度學習等算法在海量數(shù)據(jù)中迭代學習,搜索其中隱藏信息的過程,經(jīng)過迭代學習的數(shù)學模型可在后續(xù)的生產(chǎn)中起到輔助決策的作用。物聯(lián)網(wǎng)、大數(shù)據(jù)、數(shù)據(jù)挖掘三者關系如圖1所示,設備產(chǎn)生的數(shù)據(jù)通過物聯(lián)網(wǎng)平臺進行采集,大數(shù)據(jù)平臺為物聯(lián)網(wǎng)平臺提供海量數(shù)據(jù)的存儲服務,為數(shù)據(jù)挖掘分析平臺提供算力支撐,數(shù)據(jù)挖掘平臺通過分析處理物聯(lián)網(wǎng)采集的海量數(shù)據(jù)得出有價值信息并反饋給物聯(lián)網(wǎng)平臺,進行設備的有效控制。
圖1 物聯(lián)網(wǎng)、大數(shù)據(jù)、數(shù)據(jù)挖掘的關系Fig. 1 The relationship between the IOT, big data, and data mining
國內(nèi)外在物聯(lián)網(wǎng)、大數(shù)據(jù)與智能計算方面已經(jīng)進行了廣泛的研究。物聯(lián)網(wǎng)方面,趙梓銘等[3]闡述了邊緣計算的定義,明確了未來邊緣計算的發(fā)展方向,并在物聯(lián)網(wǎng)與移動應用方面列舉了實例,展現(xiàn)出了邊緣計算在這些方向上的巨大優(yōu)勢。溫華斌[4]基于對不同邊緣計算平臺的研究,綜合各平臺優(yōu)勢提出了改進的邊緣計算架構(gòu),增強了平臺的適應能力。大數(shù)據(jù)處理平臺方面,潘衛(wèi)軍等[5]對空管大數(shù)據(jù)處理平臺架構(gòu)進行研究,規(guī)劃了大數(shù)據(jù)處理平臺的層次架構(gòu),對空管大數(shù)據(jù)處理平臺架構(gòu)進行了應用分析,驗證了平臺架構(gòu)的可行性,為智慧空管的建設提供了平臺技術(shù)支持。戚紅雨[6]介紹了主流的分布式流處理平臺,對流處理平臺的特點與優(yōu)勢進行了總結(jié)分析,并給出了詳細的對比分析。在數(shù)據(jù)挖掘平臺方面,郭喬進等[7]對目前市場上常見的深度學習計算平臺進行了綜述,并對相關平臺的應用案例進行了簡單介紹。
本文在分析主流大數(shù)據(jù)平臺與數(shù)據(jù)挖掘平臺優(yōu)缺點的基礎上,結(jié)合艦艇信息化現(xiàn)狀與國內(nèi)外大數(shù)據(jù)與數(shù)據(jù)挖掘技術(shù)發(fā)展現(xiàn)狀,對艦艇大數(shù)據(jù)處理平臺架構(gòu)進行研究,規(guī)劃了艦艇大數(shù)據(jù)平臺的層次架構(gòu),提出了基于EdgeX的艦艇大數(shù)據(jù)處理平臺。本文提出的艦艇大數(shù)據(jù)處理平臺可以實時采集艦艇設備與傳感器數(shù)據(jù),針對不同的數(shù)據(jù)挖掘計算場景可以提供不同的計算處理引擎。最后通過模擬實驗驗證了艦艇大數(shù)據(jù)處理平臺架構(gòu)的可行性,為智能艦艇的發(fā)展提供平臺技術(shù)支撐。
艦艇設備硬件架構(gòu)種類繁多,操作系統(tǒng)多樣,設備管理較為分散,數(shù)據(jù)的采集難度較大,數(shù)據(jù)的內(nèi)在價值較高。為了對艦艇平臺的數(shù)據(jù)進行采集、存儲、挖掘、運用需要一套支持多種硬件架構(gòu)、兼容多種操作系統(tǒng)、支持不同通信協(xié)議的物聯(lián)網(wǎng)數(shù)據(jù)采集與控制平臺。
EdgeX Foundry[8]是由Linux基金會主持的開源項目,EdgeX Foundry可以適用于多種操作系統(tǒng),對硬件架構(gòu)的支持性較好,可以同時滿足不同協(xié)議設備間的通信需求。EdgeX Foundry提出了物聯(lián)網(wǎng)南向和北向的概念,北向指能夠提供功能的基礎和軟件,具體為IT基礎設施以及應用軟件。南向代表了數(shù)據(jù)的來源,具體為設備的傳感器、執(zhí)行器。EdgeX Foundry的微服務架構(gòu)可以分為4個服務層和2個基礎系統(tǒng)服務,其中服務層由核心服務層、支持服務層、導出服務層及設備服務層;其系統(tǒng)服務由安全服務和管理服務構(gòu)成。EdgeX Foundry的架構(gòu)大幅提高了工作效率,其可剪裁特性使其能夠在性能較低的設備上流暢運行。
離線處理是指海量數(shù)據(jù)的離線挖掘,可用在艦艇的顯控操作記錄、日志安全審計、航路軌跡分析、故障定位預測、能源消耗預測、離線模型訓練等方面。離線處理主要挖掘歷史數(shù)據(jù),對計算平臺的運算能力與存儲能力具有較高的要求,對計算的實時性要求較低。
表1 Hadoop和spark對比Tab. 1 Comparison of Hadoop and spark
Spark[9]在海量數(shù)據(jù)的分析方面具有極大優(yōu)勢,其基于內(nèi)存的處理方式與基于MapReduce[10]設計的大數(shù)據(jù)分析平臺hadoop[11]相比,可通過減少磁盤交互操作降低延遲提高處理速度,并利用彈性分布式數(shù)據(jù)集(Resiliennt Distributed Datasets,RDD)算子實現(xiàn)更多復雜算法,為大數(shù)據(jù)分析挖掘提供強大算力支持,同時其機器學習算法庫使其優(yōu)勢更加明顯。
實時處理指海量數(shù)據(jù)的在線處理,主要用在目標快速識別、航線實時規(guī)劃、自動行動控制、異常操作告警、資源占用量實時預測等方面。實時計算主要分析系統(tǒng)實時產(chǎn)生的數(shù)據(jù),具有數(shù)據(jù)規(guī)模較小,但對數(shù)據(jù)的處理速度有較高的要求。
Spark Streaming具有高吞吐量、高性能、高容錯率的特點,可以實現(xiàn)實時流數(shù)據(jù)處理,其內(nèi)部可以通過接收kafka,flume等組件的實時數(shù)據(jù)流,并根據(jù)時間間隔將數(shù)據(jù)量處理成不同的匹數(shù)據(jù),然后通過Spark Streaming的API進行數(shù)據(jù)的批處理,得出實時流數(shù)據(jù)的處理結(jié)果。Spark Streaming可以與spark的其他組件結(jié)合使用,大大增強其數(shù)據(jù)分析能力。例如與MLlib結(jié)合使用機器學習算法對流數(shù)據(jù)進行實時分析,利用Spark SQL可以使用類似SQL的程序語言進行流數(shù)據(jù)分析。
Flink是一個面向流處理和批處理的分布式計算框架,F(xiàn)link在實現(xiàn)流處理和批處理時與已有解決方法存在差異,F(xiàn)link在實現(xiàn)流處理和批處理時,與傳統(tǒng)的一些方案完全不同,F(xiàn)link將流處理和批處理二者統(tǒng)一起來。Flink是完全支持流處理,也就是說作為流處理看待時輸入數(shù)據(jù)流是無界的,批處理被作為一種特殊的流處理,只是它的輸入數(shù)據(jù)流被定義為有界的。Flink與所有常見的集群資源管理器(如Hadoop YARN,Apache Mesos和Kubernetes)集成,也可以設置為獨立集群運行。
深度學習平臺主要用于海量數(shù)據(jù)的分析處理,通過對待分析的問題進行建模分析,利用深度學習算法進行模型實現(xiàn),利用歷史數(shù)據(jù)進行模型訓練與參數(shù)調(diào)優(yōu),在海量數(shù)據(jù)中探索數(shù)據(jù)的內(nèi)在關系,挖掘數(shù)據(jù)包含的價值。目前常用的深度學習框架主要包括Tensor-Flow,PyTorch等。TensorFlow使用較為靈活,用戶可以根據(jù)自己需求建立深度學習模型,或者直接調(diào)用框架已有的模型進行訓練,解決自己的問題。新版本的TensorFlow與keras進行結(jié)合,使用keras可以事半功倍,大幅提高模型的開發(fā)效率。PyTorch以其在圖像處理領域的深耕和易用性而著稱,PyTorch具有易上手的特點,受到許多數(shù)據(jù)分析工作人員的青睞。2個框架都支持GPU加速,使用GPU可以加快模型的訓練速度。
基于EdgeX的艦艇大數(shù)據(jù)處理平臺架構(gòu)設計主要包括運行支撐環(huán)境、數(shù)據(jù)源、數(shù)據(jù)采集平臺、數(shù)據(jù)交換層、數(shù)據(jù)存儲、數(shù)據(jù)處理層、數(shù)據(jù)應用層等。
圖2 基于EdgeX的艦艇大數(shù)據(jù)處理平臺架構(gòu)Fig. 2 The architecture diagram of EdgeX Foundry
艦艇大數(shù)據(jù)處理平臺以艦艇私有云環(huán)境為基礎,艦艇私有云環(huán)境采用基于KVM的虛擬化技術(shù)完成對硬件資源的虛擬化管理,用戶可通過統(tǒng)一接口實現(xiàn)對虛擬資源的集中調(diào)配,艦艇私有云平臺提高了硬件資源利用率,保證了系統(tǒng)的安全可靠運行。
數(shù)據(jù)采集平臺主要負責艦載設備的數(shù)據(jù)采集,數(shù)據(jù)采集平臺支持多種硬件架構(gòu)、兼容多種操作系統(tǒng)、支持不同通信協(xié)議的物聯(lián)網(wǎng)數(shù)據(jù)采集與控制系統(tǒng)。通過數(shù)據(jù)采集系統(tǒng)可以將來自聲吶、雷達、傳感器等艦載設備的實時數(shù)據(jù)進行采集、傳輸和存儲,通過數(shù)據(jù)采集平臺也可以進行艦載設備的控制。數(shù)據(jù)采集平臺通過艦艇私有云的容器云平臺進行部署,容器云平臺可以保障數(shù)據(jù)采集平臺的高可用性,采集平臺的高可用從源頭處對數(shù)據(jù)的完整性進行了保障。
數(shù)據(jù)采集層使用微服務風格的EdgeX架構(gòu),EdgeX使用RAML這一RESTful API建模語言定義了核心服務、設備服務、支持服務、導出服務、安全服務、系統(tǒng)管理服務6個API接口。EdgeX的總體數(shù)據(jù)流如下:設備服務首先從設備采集實時數(shù)據(jù),然后將設備實時數(shù)據(jù)發(fā)送給核心服務,并進行本地持久化存儲,核心服務會將實時數(shù)據(jù)發(fā)送給導出服務,導出服務可以將數(shù)據(jù)發(fā)送到云端服務器或者艦艇信息系統(tǒng)。
圖3 EdgeX服務組成結(jié)構(gòu)Fig. 3 EdgeX service composition structure
數(shù)據(jù)交換層主要提供3個核心的功能,解耦、異步、削峰。通過消息隊列,平臺不同功能模塊之間實現(xiàn)了松耦合,數(shù)據(jù)采集平臺只需將數(shù)據(jù)發(fā)送到消息隊列即可,不需要關注其他功能模塊的實時狀態(tài),也不需要關注數(shù)據(jù)的實際用戶。通過消息隊列不同模塊之間可以進行異步處理,提高了系統(tǒng)的整體響應速度,提升了平臺的效能。消息隊列可以起到緩存的作用,如果數(shù)據(jù)采集的峰值較大,如果直接進行處理會導致處理模塊壓力較大,通過消息隊列對數(shù)據(jù)進行緩存可以有效降低相關模塊的處理壓力,提升系統(tǒng)整體的可靠性。
數(shù)據(jù)交換層采用Kafka[12]消息隊列,Kafka主要包括生產(chǎn)者、消費者、連接器、流處理4種核心API,其中生產(chǎn)者是指應用程序發(fā)布時間流到Kafka的一個或多個主題,消費者是指應用程序訂閱Kafka的一個或多個主題并處理數(shù)據(jù)流,連接器將Kafka主題和已有數(shù)據(jù)源進行連接,數(shù)據(jù)可以互相導入和導出,流處理從Kafka主題消費輸入流,經(jīng)過處理后產(chǎn)生輸出流到指定主題。Kafka對硬件資源消耗相對較少,支持多個生產(chǎn)者和消費者,利用副本集機制實現(xiàn)數(shù)據(jù)冗余,最大程度保證數(shù)據(jù)不丟失,通過分批發(fā)送壓縮的方式,減少網(wǎng)絡的數(shù)據(jù)傳輸開銷,提升數(shù)據(jù)吞吐量,并且可以保證在大數(shù)據(jù)量的情況下亞秒級消息延遲??梢院芎玫貙崿F(xiàn)解耦、異步、削峰功能,提升艦艇數(shù)據(jù)處理平臺的可靠性。
數(shù)據(jù)存儲索結(jié)合了Elasticsearch與Hadoop的特點,Hadoop通過分布式文件存儲可以保證海量數(shù)據(jù)文件的安全可靠存儲,Elasticsearch在實時搜索、數(shù)據(jù)交互方面具有明顯優(yōu)勢,并且支持與多種數(shù)據(jù)可視化工具結(jié)合進行數(shù)據(jù)的可視化展示,通過ES-Hadoop插件可以實現(xiàn)強強聯(lián)合,完成數(shù)據(jù)在Elasticsearch和Hadoop之間輕松的雙向移動。EdgeX獲取到的源數(shù)據(jù)經(jīng)預處理后通過Kafka首先存入HDFS實現(xiàn)長期存檔,然后與Elasticsearch結(jié)合實現(xiàn)對數(shù)據(jù)的實時訪問與檢索。
數(shù)據(jù)處理由離線批量計算與實時數(shù)據(jù)流計算兩部分構(gòu)成,離線批量計算主要采用Hadoop的MapReduce加hive的方式。Hadoop上的并行應用程序開發(fā)是基于MapReduce編程框架。通過將復雜的、運行于大規(guī)模集群上的并行計算過程抽象為Map和Reduce兩個函數(shù)來實現(xiàn)基本的并行計算任務,自動劃分處理數(shù)據(jù)和計算任務,最大程度地減少并行計算通信開銷,并對外提供并行編程接口來完成自定義數(shù)據(jù)處理。實時數(shù)據(jù)流計算主要采用Spark Streaming進行處理,將數(shù)據(jù)交換層傳輸?shù)膶崟r數(shù)據(jù)流以秒級的時間片劃分成塊,再把每塊數(shù)據(jù)作為一個單獨的RDD,利用RDD對分塊的數(shù)據(jù)實現(xiàn)操作處理。另外,Spark Streaming可以和MLlib實現(xiàn)很好的融合以完成進一步的機器學習計算任務。
圖4 Kafka 4中核心API Fig. 4 Core API in Kafka 4
應用層主要依賴數(shù)據(jù)處理層所提供的算力以及源數(shù)據(jù)對數(shù)據(jù)進行進一步的挖掘分析,針對應用需求所抽象成的智能學習任務,對機器學習、深度學習算法模型進行分布式迭代訓練,并對初步訓練獲得的算法模型進行效果評估。將性能較好的模型應用在目標識別與定位、態(tài)勢感知與分析、故障告警與預測等艦艇使用場景中,生成靜態(tài)報表及動態(tài)規(guī)劃、預測、報警等信息,為艦艇運行過程中的相關決策提供支持,提升艦艇指控、作戰(zhàn)智能化水平。
采用x86架構(gòu)pc機,在基于KVM的私有云上搭建了大數(shù)據(jù)處理平臺。
仿真系統(tǒng)數(shù)據(jù)流圖如圖5所示。在EdgeX上通過仿真模擬程序產(chǎn)生船艙機房中單個機柜的溫度、濕度、CPU使用率和內(nèi)存使用率數(shù)據(jù),Kafka通過EdgeX數(shù)據(jù)讀取端口獲取JSON格式的模擬數(shù)據(jù),溫度、濕度等較穩(wěn)定的數(shù)據(jù)在hdfs上進行存儲并實現(xiàn)離線數(shù)據(jù)計算分析其變化趨勢,CPU使用率及內(nèi)存使用率等實時數(shù)據(jù)通過Spark Steaming進行實時流處理,在前端頁面實現(xiàn)數(shù)據(jù)可視化監(jiān)控展示,并使用PyTorch平臺進行進一步挖掘,分析資源使用率、建立應用健康度模型。
圖5 實際仿真系統(tǒng)中數(shù)據(jù)流圖Fig. 5 The diagram of data flow in the actual simulation system
如圖6所示,可以在前端頁面查看艦艇機柜資源的使用情況以及健康度情況,通過EdgeX仿真程序生成的艦艇坐標仿真數(shù)據(jù)可以與cesium前端頁面進行交互,查看實時的艦艇位置。
圖6 前端展示界面Fig. 6 Front-end display interface
本文在分析主流大數(shù)據(jù)平臺與數(shù)據(jù)挖掘平臺優(yōu)缺點的基礎上,結(jié)合艦艇信息化現(xiàn)狀與國內(nèi)外大數(shù)據(jù)與數(shù)據(jù)挖掘技術(shù)發(fā)展現(xiàn)狀,對艦艇大數(shù)據(jù)處理平臺架構(gòu)進行研究,規(guī)劃了艦艇大數(shù)據(jù)平臺的層次架構(gòu),提出了基于EdgeX的艦艇大數(shù)據(jù)處理平臺。本文所提出的艦艇大數(shù)據(jù)處理平臺可以實時采集艦艇設備與傳感器數(shù)據(jù),針對不同的數(shù)據(jù)挖掘計算場景和計算任務可以提供不同的計算處理引擎。通過模擬實驗驗證了艦艇大數(shù)據(jù)處理平臺架構(gòu)的可行性,為智能艦艇的發(fā)展提供了平臺技術(shù)支撐。