呂志峰
(江蘇航運職業技術學院,江蘇 南通 226010)
柴油機是船舶推進系統的重要組成部分,船舶噸位的不斷增長對推進系統提出了更高的要求,在這種情況下,柴油機的功率越來越大,結構也越來越復雜,柴油機運行的可靠性和穩定性尤為重要。對柴油機的監控得到的數據量不僅包含數字量,同時也包含很多的高精度模擬量,從這些數據中獲取有用的數據是一個非常龐大的工程。不僅要求對所有的數據進行存儲,同時還要對大量的數據進行分析,必要時還需要建立柴油機的監測模型,使用大數據技術對柴油機的相關參數進行監測和處理。
對船舶柴油機的監控一直是國內外研究的熱點,特別是對柴油機故障的診斷必須依賴于柴油機相關參數的監控。張新宇[1]提出一種基于大數據處理的柴油機SCR 系統,并提出用戶行為會對SCR 系統造成影響。熊威[2]認為傳統的柴油機故障診斷方法存在一定局限性,這主要是由于船舶上的數據采集和處理速度受到嵌入式處理器的限制,同時數據的安全性也無法得到有效保證。大數據平臺技術為柴油機的監測和故障診斷提供了一個新的方法,為此本文提出一種基于Hadoop 技術的船舶柴油機大數據平臺。該平臺能夠實現對船舶用柴油機數據的實時采集、存儲、查詢和分析,同時也為后續的柴油機故障診斷提供良好的基礎。
Hadoop 是一種分布式基礎架構,Hadoop 技術中有2 個最重要的組件,分別是HDFS(Hadoop Distribute File System)和MapReduce,依靠這2 個組件,Hadoop技術可以實現大數據的存儲和處理。Hadoop 技術具有高可靠性、低成本、高擴展性以及高效性,同時它還支持多種編程語言,可以有效降低項目的開發時間和成本[3–5]。
在大數據處理平臺中,對數據的存儲至關重要,因而HDFS 在整個Hadoop 技術中的地位也相當重要。圖1 為HDFS 的存儲架構,可以發現,HDFS 對數據的操作依賴于若干數量的DataNode 以及NameNode,DataNode 是數據節點,負責存儲大數據平臺所有的基礎數據,而NameNode 則存儲映射表,這個映射表也不是一直不變,而是通過DataNode 不斷上報的信息進行更新,這一點主要通過Heartbeat 來實現。映射表中存儲了不同數據的位置信息以及副本的數量,這樣在客戶端發起讀數據的請求后,通過NameNode 就可以獲取該數據的具體內容[6]。

圖1 HDFS 讀寫過程的實現Fig. 1 Implementation of HDFS read and write process
NameNode 和DataNode 保持數據通信,這樣就可以不斷地更新數據,同時也可以接收NameNode 的一些操作命令,包括對數據的復制、刪除等,客戶端同時也可以直接向DataNode 發出命令進行操作,為了實現具體的操作,DataNode 之間需要根據一定的通信協議要求進行合作。
在船舶柴油機大數據平臺的搭建中,為了保證數據的完整性和準確性需要考慮數據存儲的安全性,在HDFS 中通過副本實現,大數據的存儲通過不同的數據節點實現,因而將柴油機的數據存儲于一個數據節點,此數據節點位于機架1,而將另外一個副本儲存在機架2 上的另一個數據節點,因而可以最大程度保證數據的完整性和可靠性。同時當一個數據節點出現故障時,HDFS 會識別出當前數據節點的機架號,并將該節點上的數據備份到另外一個機架上。
為了實現對柴油機監控數據的處理,除了要使用HDFS 對數據進行存儲、刪除、查詢等操作外,還需要對輸入的數據進行進一步分析和計算,在這個過程中,MapReduce 是實現這一功能的關鍵。在Hadoop技術中不僅可以實現分布式存儲,同時還可以實現分布式計算[7]。
在柴油機相關數據輸入后,使用MapReduce 進行分布式計算的主要過程如圖2 所示。分布式計算主是將柴油機監測數據按照一定的規則進行分類,將其分成多個Split,JobTracer 將計算任務合理地分配給MapperTask,Shuffle 負責將從上一步獲取的數據分發到ReducerTask,ReducerTask階段則會將MapperTask 所獲得的結果進行匯總,最后得到總的輸出結果。

圖2 MapReduce 實現分布式計算的過程Fig. 2 MapReduce implementation of distributed computing
本文設計的基于Hadoop 技術的船舶柴油機大數據平臺整體結構如圖3 所示,整個平臺包括3 層,分別是應用層、大數據層以及數據采集層。

圖3 系統整體設計框圖Fig. 3 System overall design block diagram

圖4 寫入速度和寫入時間測試結果Fig. 4 Write speed and write time test results
1)數據采集層。這一層主要是負責對柴油機的數據進行采集,一般使用嵌入式系統并結合以太網、現場總線等方式實現船舶柴油機數據的采集和傳輸。嵌入式系統具有良好的實時性,因而在完成對船舶柴油機數據的采集后使用CAN 總線或者以太網,將數據發送到大數據平臺進行分布式存儲和計算。
2)大數據層。這一層中使用HDFS 對柴油機監測數據進行存儲,完成對數據的離線分析、BI 分析以及實時查詢等操作。
3)應用層。應用層是和用戶實現交互功能,提供友好的用戶界面,通過用戶界面用戶可以定制出在大數據平臺上需要實現的功能,包括數據挖掘、數據查詢以及數據分析,并輸出可視化的結果和圖表等。
基于Hadoop 技術的船舶柴油機大數據平臺實現了分布式存儲和分布式計算,因而系統實現的功能主要包括:
1)對船舶柴油機數據的實時采集,包括包括燃油子系統、潤滑子系統、進排氣子系統以及冷卻子系統的相關參數進行采集,具體的采集參數如表1 所示。

表1 船舶柴油機大數據平臺數據采集參數Tab. 1 Data acquisition parameters of marine diesel engine big data platform
2)由于采集的不同參數的數據格式完全不同,因而在采集完成后需要對數據進行標準化,本文使用的數據標準化方法主要包括離差標準化以及歸一化等方法。
3)為使用者提供人機界面,能夠完成對數據的可視化統計和分析,同時可以完成對柴油機歷史數據的查詢、刪除等操作。
4)可以根據需求擴展現有系統的功能,支持二次開發。
為了驗證本文設計的船舶柴油機大數據平臺數據存儲以及分析的功能,搭建試驗平臺。試驗平臺包括4 臺電腦,這些電腦的配置及相關指標如表2所示,其中1 臺電腦上安裝有船舶柴油機大數據平臺軟件,另外3 臺電腦作為從機節點,在每臺電腦上配置好相應的開發環境后,對文件的讀寫進行基本測試,測試文件來源于編制好的柴油機基本數據集合,每個文件大小在100~110 Mb。

表2 試驗環境硬件參數Tab. 2 Test environment hardware parameters
大數據平臺最終目標是對海量的船舶柴油機數據進行采集并處理,因而需要處理的數據量較大,同時也要求有較高的數據讀寫速度,只有這樣才能滿足系統設計需求。因而本文使用2 個試驗來檢驗搭建的平臺性能,一個是多文件的寫入速度測試,另外一個是柴油機數據排序的效率。
1)在船舶柴油機大數據平臺應用程序中編寫對應程序,測試在數據量相同(2 G)的情況下,不同文件數量時文件的寫入時間和最大寫入速度,得到的結果如圖5 所示??梢园l現在相同數據量的情況下,文件數量和寫入速度成反比,和寫入時間成正比。

圖5 排序測試結果Fig. 5 Test result of sequencing
2)采集的柴油機數據包括采集時間、采集參數、參數的數值等,為了提升數據存儲效率,需要對采集的數據進行排序,以便更好地分布式存儲。同時船舶柴油機大數據平臺在排序時根據采集時間、采集參數的種類等可以提供不同的排序方式。本文利用軟件設置對不同采集參數進行統計和排序,可以得到不同采集的所有采集結果。
一般在進行排序時只采用一個MapTask,但是這樣就無法體現出Hadoop 中分布式存儲和計算的優勢,因而在實驗中設置MapTask 為4 個,并且將不同采集參數作為分類標準,設置對應數量的ReduceTask。對不同大小的數據進行測試得到結果如圖5 所示,可以發現數據量越大,船舶柴油機大數據平臺對這些數據所耗費的時間越多。
隨著船舶柴油機技術的不斷發展,對柴油機實時監控并從監控的數據中對柴油機故障進行分析勢在必行。由于柴油機實時采集數據量較大,當船舶數量較多時就會產生大量的實時數據,本文提出一種基于Hadoop 技術的船舶柴油機大數據平臺,能夠實現柴油機數據的分布式存儲和計算。通過一系列的測試表明,本文設計的船舶柴油機大數據平臺可以滿足船舶柴油機數據的存儲和分析需求,并且具有較高的可靠性和擴展性。