吳永旺,饒銀輝,莊偉濤,子文江,楊捍東,余 蓉,洪曉斌
(1. 華南理工大學機械與汽車工程學院,廣東 廣州 510640; 2. 廣船國際有限公司,廣東 廣州 511462)
無人船是一個集智能傳感、人工智能、大數據、云計算、物聯網等新技術為一體的全新產業領域,已引起國內外密切關注[1-2]。相比于有人駕駛船舶,無人船具有無人操控、可適應作業環境復雜多變等特點[3]。因而其自主性、安全性、可靠性等要求更高,對無人船進行全面的測試以驗證其能正常行使相關功能,不僅是無人船交付使用的前提,也是無人船服役期間必不可少的環節。依據無人船建造流程,無人船測試分為三個階段:內場測試、系泊試驗、航行試驗。其中,內場測試項目主要包括船體新材料檢測、電氣檢查等,系泊試驗項目主要包括電磁兼容、自扶正測試、通信距離測試、通信安全檢測等,航行試驗項目主要包括推進系統傳動性能測試、推進系統諧波檢測、航行控制及自主航行測試、操縱性測試、避障測試、多船協同性能測試等。目前無人船測試主要以分環節測試為主,測試項目、信號提取及數據記錄等過于分散,且操作工序多、耗能大、側重點不明顯,無法做到有效快速綜合實時測試[4]。
Hadoop是目前主流的一種分布式計算平臺,其能夠靈活地給用戶提供富有彈性和個性化的資源及計算服務,Hadoop平臺可作為船舶大數據處理的基礎平臺[5]。例如, Lee H W[6]等設計了可用于船舶和離岸工業的Hadoop大數據平臺,能夠有效管理和處理船廠現有大數據;庫波[7]基于Hadoop平臺構建了艦船遠程實時監控系統,實現了從海量艦船監控數據中高效挖掘出有效信息;王寧等[8]建立了以Hadoop為基礎架構的艦船云存儲數據中心密文訪問控制機制,解決了艦船云存儲數據的安全問題??梢妼adoop平臺應用于無人船測試中能夠很好解決測試過程中數據量大、數據種類多、數據記錄分散的問題。
本文針對無人船測試數據存儲及運算數據提取的需求,提出一種基于HDFS的無人船測試多源數據存儲優化方法,并通過實驗驗證系統運行效率。
Hadoop集群具有良好的擴展性,能夠較好應對無人船測試數據數據量大、種類多的問題,并能滿足對無人船測試數據進行多尺度深度挖掘的需求[9]。無人船測試Hadoop云平臺總體框架如圖1所示,平臺由三層結構組成:現場采集層、現場監測層、遠程管理層。現場采集層主要由負責采集無人船運動狀態信息、環境信息等無人船綜合評價所需信息的傳感器群組成,各種信息匯總到數據采集器后,通過無線方式發送到現場監測層。現場監測層主要由現場服務器和無線電臺組成,其中無線電臺用于現場服務器和數據采集器之間的通信,現場服務器負責將無線電臺接收到的測試數據進行預處理后上傳至云中心,并可以在現場實時監測無人船相關狀態。遠程管理層即云中心,主要是基于Hadoop搭建的分布式集群運算平臺,負責無人船測試數據的存儲、運算,并得出無人船綜合評價報告,用戶可通過遠程訪問云中心服務器查看和下載評價報告。其中,無人船測試數據的存儲是無人船綜合評價的前提,良好的數據存儲方案能夠有效提高無人船綜合評價作業運算效率。
圖1 無人船測試Hadoop云平臺總體框架
由于無人船測試過程中需要采集大量數據,且這些數據的來源不同,因而在將這些數據存儲到HDFS時將不可避免地出現失效和重復。如果將所有數據全部直接存儲進HDFS,不僅造成存儲空間浪費,還會嚴重降低存儲效率,影響后期數據挖掘分析運算的效率,同時又必須有一定的冗余以保證在部分節點出現故障時系統仍能正常運行。因此,除常規的數據預處理操作外,無人船測試多源數據還需要進行存儲容錯以降低Hadoop集群中節點的故障失效率,進行重復數據刪除以保證HDFS的存儲性能[10-11]。
無人船測試多源數據存儲容錯機制主要采用冗余復制和糾刪碼兩種數據冗余手段實現。
1)無人船測試多源數據復制容錯
無人船測試多源數據復制容錯主要是復制無人船測試現場各傳感器采集的數據,同時存儲源數據及其副本,其中,復制副本的份數取決于Hadoop集群的規模。各個副本分別存儲于不同的節點,當某一個或多個節點出現故障時,Hadoop將從正常節點存儲的副本中提取數據繼續運行。
2)無人船測試多源數據糾刪碼容錯
無人船測試多源數據糾刪碼容錯來源于通信技術中的糾刪碼,其可容許HDFS存儲數據中數據幀的丟失,本文采用數據存儲系統中常用的Reed-Solomon(RS)碼作為無人船測試多源數據糾刪碼。在無人船測試多源數據存儲過程中,利用糾刪碼實現丟失數據的恢復,可提高無人船測試數據存儲的可靠性。無人船測試過程中數據存儲糾刪碼容錯實現原理如圖2所示,將無人船測試多源數據文件A分成k個數據塊,然后將k個數據塊映射到n個編碼塊中(n>k),當存儲節點出現故障時,只需要通過n個編碼塊中的k個便能使數據恢復。對無人船進行測試時,所采集的數據種類多且數據量大,將傳感器采集的數據映射到不同的節點,如果有節點失效時即可通過糾刪碼使丟失的數據得到修復。
圖2 無人船測試多源數據糾刪碼容錯實現
無人船測試多源數據HDFS存儲的糾刪碼容錯程序執行流程如圖3所示。首先Client對無人船測試多源數據文件進行數據塊劃分,并將數據塊發送到HDFS中的各DataNode節點存儲,當HDFS中的NameNode節點發送糾刪碼策略到DataNode節點時,HDFS中的DataNode節點根據NameNode節點發送信息的不同對存儲的無人船測試數據塊執行編碼操作或解碼操作。當發生數據塊失效時,HDFS中的DataNode節點負責恢復失效數據塊并將其送返Client。
圖3 無人船測試HDFS糾刪碼容錯執行流程
無人船測試多源數據存儲容錯解決了節點失效故障的情況,但是在長期多次的測試過程中數據量會增多,而且測試數據以大量的小文件及分塊數據形式存在,大量存在的重復數據塊和重復文件會影響HDFS存儲能力。針對上述問題,可分兩個層級對重復數據進行刪除優化,并與HDFS的節點功能相結合,從整體上提升HDFS存儲性能。首先對重復數據文件進行查詢刪除,然后對其余不重復的數據文件進行重復數據塊查詢刪除。無人船測試多源數據兩級重復數據刪除存儲架構如圖4所示。
圖4 無人船測試HDFS兩級重復數據刪除存儲架構
1)無人船測試HDFS文件級重復數據刪除
無人船測試多源數據HDFS存儲系統中文件級重復數據刪除程序執行流程如圖5所示。首先Client采用SHA-1算法計算無人船測試數據文件的指紋,并將指紋信息發送至HDFS中的NameNode節點。HDFS中的NameNode節點在收到無人船測試數據文件指紋后,通過搜索文件指紋數據庫進行指紋數值匹配,若存在相同的值,則進行文件刪除操作,若不存在相同的值,說明文件沒有重復,HDFS中的NameNode節點將該文件的指紋送返Client,同時將HDFS中各DataNode節點信息一并返回,以便接下來進行數據塊指紋查詢時使用,至此無人船測試多源數據HDFS存儲系統文件級重復數據刪除完成。
圖5 無人船測試HDFS文件級重復數據刪除流程
2)無人船測試HDFS數據塊級重復數據刪除
無人船測試多源數據HDFS存儲系統中數據塊級重復數據刪除程序執行流程如圖6所示。首先Client對經過文件級重復數據刪除的非重復數據文件使用避免偏移問題的動態塊長度方法進行數據塊劃分,其中動態塊長度通過程序自動設置指定。特別地,由于HDFS中的DataNode節點默認數據塊大小為64M,因此內存過小的無人船測試多源數據文件同樣當做數據塊來進行處理。數據塊劃分好后,Client計算數據塊指紋,并根據端口處各DataNode節點信息,將數據塊指紋發送至對應的HDFS中的DataNode節點進行重復指紋匹配。HDFS中的DataNode節點采用全局重復數據刪除策略搜索所有數據塊指紋數據庫中的指紋進行比較,若存在相同值,則進行數據塊刪除操作,若不存在相同值,HDFS中的DataNode節點將該數據塊的指紋送返Client。至此,無人船測試多源數據HDFS存儲系統數據塊級重復數據刪除完成。
圖6 無人船測試HDFS數據塊級重復數據刪除流程
根據無人船測試需求和項目在建無人船測試場現有條件,選取無人船測試過程中所用的北斗、DGPS、激光雷達、聲納、視覺傳感器、羅經傳感器、姿態傳感器、波浪傳感器、氣象傳感器等多傳感器數據作為數據源,以無人船測試場云中心現有的5節點完全分布式Hadoop集群作為運算平臺進行無人船測試多源數據HDFS存儲實驗。實驗平臺的整體數據流如圖7所示。
圖7 無人船測試實驗平臺整體數據流圖
實驗過程中主要程序執行流程如下:
1)將無人船測試現場采集的數據存儲于現場監測層的服務器本地目錄。
2)將無人船測試數據文件按字節數從小到大排列。
3)使用Hadoop系統默認程序依次將無人船測試數據文件寫入HDFS,然后提交無人船測試評價作業并記錄作業運算時間。
4)清空HDFS存儲,使用前文所述的無人船測試多源數據HDFS存儲優化方法依次將無人船測試數據寫入HDFS,然后提交無人船測試評價作業并記錄作業運算時間。
5)比較優化前后數據塊規模這個變量對無人船測試評價作業運算速率的影響。
優化前后基于無人船測試多源數據HDFS存儲的無人船測試評價作業運算時間隨測試數據塊規模變化的趨勢如圖8所示。由圖8可知,隨著數據塊規模的增大,運算時間也隨之呈線性增長趨勢;相比之下,基于優化HDFS存儲的無人船測試評價作業運算效率比起采用Hadoop系統默認程序時有明顯提升。為進一步比較優化前后基于HDFS存儲的無人船測試評價作業運算效率提升程度,分別計算優化前后每一個數據塊的平均運算時間如圖9所示。可見,雖然采用存儲優化方法后基于HDFS存儲的無人船測試評價作業運算效率有一定提升,但其數據塊平均處理時間基本保持不變,這表明Hadoop集群單個數據塊處理時間對數據塊量級的變化并不敏感。通過簡單的計算可以得到,采用前文所述存儲優化方法后基于HDFS存儲的無人船測試評價作業運算效率比起采用Hadoop系統默認程序存儲時提升約20%。
圖8 數據塊規模對無人船測試評價作業運行時間影響圖
圖9 無人船測試評價作業中平均每個數據塊的處理時間
針對無人船測試需求和數據量大且融合運算復雜特點,結合Hadoop平臺技術優勢提出解決方案,重點探討無人船測試多源數據HDFS存儲方法的研究,并進行實驗驗證。結果表明,采用本文所述存儲優化方法后基于HDFS存儲的無人船測試評價作業運算效率比起采用Hadoop系統默認程序時提升約20%,可滿足無人船測試過程中的數據存儲需求,為基于大數據的無人船質量綜合評價工作奠定基礎。后續將運用大數據技術對基于HDFS存儲的無人船測試數據進行深入挖掘分析,進一步開展無人船質量綜合評價研究工作。