顏廷龍,李 瑛,王鳳芹
(海軍航空大學(xué),煙臺(tái) 264001)
隨著當(dāng)今世界的發(fā)展,各行各業(yè)產(chǎn)生了大量的數(shù)據(jù),已經(jīng)遠(yuǎn)超常規(guī)數(shù)據(jù)處理手段的處理能力,海量數(shù)據(jù)處理面臨重大挑戰(zhàn)[1].作為海量數(shù)據(jù)處理的有效手段[2],大數(shù)據(jù)處理技術(shù)發(fā)展已日趨成熟[3],并在生活服務(wù)的各個(gè)領(lǐng)域中廣泛發(fā)展[4].官方也制定了相關(guān)政策,推動(dòng)大數(shù)據(jù)技術(shù)的發(fā)展[5].
現(xiàn)代化戰(zhàn)機(jī)裝有眾多傳感器,能夠記錄數(shù)百個(gè)飛行參數(shù).目前,海軍航空兵部隊(duì),操課,訓(xùn)練,演習(xí)都產(chǎn)生了大量的飛行數(shù)據(jù).除了這些飛行數(shù)據(jù),維修保障基地,軍械部門也產(chǎn)生了大量數(shù)據(jù).如果可以將這些數(shù)據(jù)集成分析,可以有效提高飛機(jī)飛行安全,提高海軍航空兵部隊(duì)的科學(xué)化管理和決策能力.
針對(duì)大數(shù)據(jù)技術(shù)在航空系統(tǒng)的應(yīng)用,目前不少專家已經(jīng)進(jìn)行了研究.在航空數(shù)據(jù)分析領(lǐng)域,Singh和Kaushik 介紹了使用大數(shù)據(jù)基礎(chǔ)架構(gòu)分析航空大數(shù)據(jù)的方法,并應(yīng)用大數(shù)據(jù)工具為機(jī)務(wù)維修保障提出輔助決策[6].陳金等基于大數(shù)據(jù)技術(shù)設(shè)計(jì)了一個(gè)飛機(jī)健康管理的平臺(tái)[7].Li 等針對(duì)目前機(jī)務(wù)維修保障存在的維護(hù)效率低等問題,提出了一種飛機(jī)健康管理的大數(shù)據(jù)體系架構(gòu)[8].Rehm 等將高維數(shù)據(jù)可視化技術(shù)應(yīng)用到航空大數(shù)據(jù)和天氣大數(shù)據(jù),解決了航空大數(shù)據(jù)和天氣大數(shù)據(jù)的數(shù)據(jù)分析問題[9].
雖然在各大航空公司,大數(shù)據(jù)技術(shù)已經(jīng)得到廣泛應(yīng)用,但部隊(duì)的航空數(shù)據(jù)管理上還尚不成熟.其業(yè)務(wù)管理模式,數(shù)據(jù)來源,平臺(tái)性能需求等方面都與傳統(tǒng)的航空大數(shù)據(jù)平臺(tái)都有顯著不同.這就要求針對(duì)部隊(duì)的實(shí)際業(yè)務(wù)需求設(shè)計(jì)航空數(shù)據(jù)平臺(tái).
Apache Spark是用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎.它提供多種語言的API 接口.它還包含豐富的上層基礎(chǔ)應(yīng)用.相比于Hadoop,使用方便,運(yùn)行速度快,適用場(chǎng)景更廣泛.
航空信息服務(wù)平臺(tái)設(shè)計(jì)是在針對(duì)航空數(shù)據(jù)的優(yōu)化采集和分析基礎(chǔ)上,面向航空兵部隊(duì)的應(yīng)用需要,實(shí)現(xiàn)航空大數(shù)據(jù)平臺(tái)的開發(fā)和設(shè)計(jì).本文提出了基于Spark的航空信息服務(wù)平臺(tái)設(shè)計(jì)方案,首先進(jìn)行平臺(tái)的總體框架設(shè)計(jì),然后設(shè)計(jì)了主要的功能模塊,最后在實(shí)驗(yàn)環(huán)境下實(shí)現(xiàn)平臺(tái)的設(shè)計(jì)與開發(fā),進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證平臺(tái)在處理大數(shù)據(jù)方面的性能優(yōu)勢(shì).
海軍航空兵部隊(duì)的航空信息涵蓋飛行訓(xùn)練過程中產(chǎn)生的所有與飛機(jī)飛行相關(guān)的數(shù)據(jù),主要包括:(1)飛參數(shù)據(jù);(2)地空數(shù)據(jù)鏈(ACARS);(3)作戰(zhàn)指揮數(shù)據(jù);(4)任務(wù)計(jì)劃數(shù)據(jù)等,數(shù)據(jù)量隨著海航部隊(duì)飛機(jī)的增多和時(shí)間的積累逐步增大.
航空服務(wù)信息具有多源異構(gòu)的屬性,包括多來源、多性質(zhì)、多層次、關(guān)聯(lián)性等特點(diǎn).
目前,海軍航空部隊(duì)傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方案是各個(gè)機(jī)務(wù)部門將數(shù)據(jù)分散存儲(chǔ)到多個(gè)系統(tǒng)中.這樣不便于工作人員的管理和維護(hù),因此迫切需要一個(gè)可以匯總存儲(chǔ)多個(gè)系統(tǒng)的航空信息信息服務(wù)平臺(tái).
根據(jù)對(duì)航空信息的來源的特點(diǎn),本文設(shè)計(jì)了一個(gè)基于大數(shù)據(jù)的航空信息服務(wù)平臺(tái),使用Hadoop 分布式文件系統(tǒng)(HDFS)完成航空信息的存儲(chǔ),基于Spark和相關(guān)數(shù)據(jù)挖掘算法實(shí)現(xiàn)航空信息的快速處理,數(shù)據(jù)挖掘[10].分析部隊(duì)的實(shí)際需求,平臺(tái)必須滿足下列要求:
(1)分布式.根據(jù)航空信息的數(shù)據(jù)量大,來源廣等特點(diǎn),平臺(tái)需采用分布式文件系統(tǒng)存儲(chǔ),在實(shí)現(xiàn)數(shù)據(jù)的高效存儲(chǔ)和高容錯(cuò)性.
(2)并行化.平臺(tái)必須支持運(yùn)算并行化來提升計(jì)算速度,具有良好的數(shù)據(jù)處理能力.并且后續(xù)僅通過簡(jiǎn)單的節(jié)點(diǎn)增加就可以帶來計(jì)算速度的提升,以便于相關(guān)管理人員日后的維護(hù)和管理.
(3)擴(kuò)展性強(qiáng).平臺(tái)應(yīng)模塊化設(shè)計(jì),由于海軍航空部隊(duì)的業(yè)務(wù)需求復(fù)雜,需要平臺(tái)可根據(jù)業(yè)務(wù)需求的變化,更新數(shù)據(jù)分析模塊,滿足定制化需求.
(4)可用性強(qiáng)[11].平臺(tái)以使用者為中心,設(shè)計(jì)能符合使用者的習(xí)慣與需求,簡(jiǎn)單易用.
本平臺(tái)基于Spark 進(jìn)行搭建將航空信息服務(wù)平臺(tái)為四層架構(gòu),自頂向下采用接口連接相鄰層,數(shù)據(jù)的獲取和存儲(chǔ)是最底層,分別為數(shù)據(jù)源層和數(shù)據(jù)存儲(chǔ)層.再上層為計(jì)算分析層,主要提供計(jì)算框架和數(shù)據(jù)處理功能.交互應(yīng)用層,為平臺(tái)的用戶提供交互界面[12],平臺(tái)總體框架圖如圖1所示.
圖1 平臺(tái)總體框架圖
數(shù)據(jù)源層的主要功能是數(shù)據(jù)的獲取,即各個(gè)航空單位存儲(chǔ)的航空數(shù)據(jù),包含需要從原有關(guān)系型數(shù)據(jù)庫(kù)導(dǎo)入的數(shù)據(jù),和新產(chǎn)生的數(shù)據(jù),數(shù)據(jù)具有多源異構(gòu)的特性.數(shù)據(jù)源層還會(huì)進(jìn)行數(shù)據(jù)預(yù)處理工作,通常包含清洗、集成、變換以及歸約.目的是對(duì)重復(fù)數(shù)據(jù)的清洗和對(duì)缺少數(shù)據(jù)的填補(bǔ);消除數(shù)據(jù)的冗余性;將數(shù)據(jù)的存儲(chǔ)形式改變以更適合數(shù)據(jù)處理[13];預(yù)處理后的數(shù)據(jù)經(jīng)過ETL 處理,采用Sqoop 將處理后的源數(shù)據(jù)高效的存儲(chǔ)到數(shù)據(jù)存儲(chǔ)層的數(shù)據(jù)倉(cāng)庫(kù)中.
數(shù)據(jù)存儲(chǔ)層采用Hadoop的分布式存儲(chǔ)框架HDFS,將航空數(shù)據(jù)以文件形式存儲(chǔ)獲取到的航空數(shù)據(jù),HDFS采用主從架構(gòu),由一個(gè)NameNode和多個(gè)DataNode 組成.NameNode 主要管理文件塊的Namespace和Block管理,維護(hù)著系統(tǒng)文件樹的元數(shù)據(jù)和各個(gè)文件所在的DataNode 位置信息.DataNode 存儲(chǔ)和讀取具體文件,并定時(shí)地向NameNode 發(fā)送心跳信息.HDFS 將文件分塊存儲(chǔ)在各個(gè)DataNode 上,默認(rèn)的Block 塊大小為128 MB.為提高平臺(tái)業(yè)務(wù)運(yùn)算效率,采用Hadoop 生態(tài)下的開源工具Hive 構(gòu)建航空信息數(shù)據(jù)倉(cāng)庫(kù),管理元數(shù)據(jù).
計(jì)算分析層的作用是對(duì)存儲(chǔ)的航空數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,實(shí)現(xiàn)各種業(yè)務(wù)需求.包括針對(duì)航空數(shù)據(jù)的數(shù)據(jù)挖掘,執(zhí)行SparkSQL 命令等.其中航空數(shù)據(jù)挖掘基于SparkMllib 庫(kù)和利用Spark 編程接口自定義的聚類算法完成.
計(jì)算分析層的基本工作流程如圖2所示,首先,構(gòu)建運(yùn)行環(huán)境,創(chuàng)建一個(gè)SparkContext,并且向資源管理器Yarn 申請(qǐng)Executor 資源,并啟動(dòng)相應(yīng)資源.然后SparkContext 依據(jù)RDD的依賴關(guān)系構(gòu)建DAG 圖,同時(shí)創(chuàng)建一個(gè)DAGScheduler 對(duì)象依據(jù)作業(yè)和任務(wù)的依賴,制定調(diào)度邏輯,將DAG 圖分解成Stage,因?yàn)镾tage之間存在依賴關(guān)系,只有前面的Stage 運(yùn)算完,后面的才開始運(yùn)算.最后,將完成的Stage 發(fā)送給TaskScheduler,再由TaskScheduler 將Task 發(fā)送給Executor 運(yùn)行,運(yùn)行結(jié)束后釋放計(jì)算資源[14].
圖2 計(jì)算分析層基本工作流程
用戶交互層主要功能是為用戶提供良好的使用界面,并包含數(shù)據(jù)查詢,數(shù)據(jù)分析,數(shù)據(jù)可視化等功能,并將航空信息信息直觀地展示出來,提高海軍航空部隊(duì)的訓(xùn)練效率和管理效能,平臺(tái)的數(shù)據(jù)可以通過圖表,直觀展示出原始飛參數(shù)據(jù),平臺(tái)的分析結(jié)果等.
航空信息服務(wù)平臺(tái)的功能模塊主要?jiǎng)澐譃閿?shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)分析模塊和信息查詢模塊3個(gè)功能子模塊,如圖3所示.數(shù)據(jù)存儲(chǔ)模塊的功能保障數(shù)據(jù)的存儲(chǔ)和資源管理.數(shù)據(jù)分析模塊主要實(shí)現(xiàn)將數(shù)據(jù)挖掘算法寫入到Spark中,也可以使用Spark 自帶的Mllib 機(jī)器學(xué)習(xí)庫(kù)進(jìn)行分析現(xiàn)對(duì)航空信息的數(shù)據(jù)挖掘.信息查詢模塊主要實(shí)現(xiàn)對(duì)平臺(tái)基礎(chǔ)數(shù)據(jù)和分析數(shù)據(jù)查詢,還有相關(guān)數(shù)據(jù)的上傳下載.
圖3 平臺(tái)主要功能模塊設(shè)計(jì)
數(shù)據(jù)存儲(chǔ)模塊的功能是將從多個(gè)數(shù)據(jù)源獲取的航空數(shù)據(jù)傳入到HDFS中.主要包括經(jīng)過預(yù)處理后的航空數(shù)據(jù)以及平臺(tái)生成的數(shù)據(jù),以特定的格式存儲(chǔ)到HDFS中.同時(shí),平臺(tái)針對(duì)每一份數(shù)據(jù)都包含多份備份,提高了平臺(tái)的容錯(cuò)能力.避免出現(xiàn)數(shù)據(jù)丟失的情況,此外,還應(yīng)用Yarn 進(jìn)行統(tǒng)一的資源管理和調(diào)度.
數(shù)據(jù)分析模塊主要是應(yīng)用Spark的內(nèi)存計(jì)算引擎,實(shí)現(xiàn)針對(duì)航空信息的數(shù)據(jù)挖掘處理.利用Spark 自帶的編程接口和相關(guān)組件實(shí)現(xiàn)數(shù)據(jù)分析模塊的調(diào)入.平臺(tái)也根據(jù)飛參數(shù)據(jù)具有多元時(shí)間序列數(shù)據(jù)的特點(diǎn),自定義了數(shù)據(jù)分析算法,可根據(jù)飛參數(shù)據(jù)進(jìn)行飛機(jī)的飛行動(dòng)作識(shí)別和劃分.
開發(fā)了基于航空服務(wù)信息服務(wù)平臺(tái)的Web 應(yīng)用,可對(duì)相關(guān)數(shù)據(jù)上傳下載,相關(guān)數(shù)據(jù)的可視化展示,應(yīng)用SparkSQL 實(shí)現(xiàn)數(shù)據(jù)查詢功能,為用戶提供了統(tǒng)一的數(shù)據(jù)源訪問接口.
為了測(cè)試航空信息服務(wù)平臺(tái)的性能,本文將航空信息服務(wù)平臺(tái)(AISP)與基于SQL Server的傳統(tǒng)航空數(shù)據(jù)倉(cāng)庫(kù)(TDW)針對(duì)航空數(shù)據(jù)的計(jì)算與存儲(chǔ)進(jìn)行對(duì)照實(shí)驗(yàn).
本文測(cè)試航空信息服務(wù)平臺(tái)采用的實(shí)驗(yàn)集群由1 臺(tái)master 節(jié)點(diǎn)和8 臺(tái)slave 節(jié)點(diǎn)組成,集群的節(jié)點(diǎn)配置參見表1.
表1 計(jì)算機(jī)節(jié)點(diǎn)配置
實(shí)驗(yàn)數(shù)據(jù)采用海軍某場(chǎng)站存儲(chǔ)的飛參數(shù)據(jù),數(shù)據(jù)量分別為2.4 MB,20 MB,200 MB,500 MB,1000 MB和2000 MB,共5 組數(shù)據(jù),分別進(jìn)行數(shù)據(jù)查找和數(shù)據(jù)預(yù)處理測(cè)試.
第1 組實(shí)驗(yàn)測(cè)試使用同一條SQL 語句查找符合條件的數(shù)據(jù),實(shí)驗(yàn)次數(shù)為5 次,查找時(shí)間取平均值,測(cè)試用SQL 語句為“select type,count(*)as count from test group by type order by count desc;”.SQL 語句執(zhí)行效率對(duì)比如圖4所示.
第2 組實(shí)驗(yàn)比較航空信息服務(wù)平臺(tái)針對(duì)不同數(shù)量級(jí)的實(shí)驗(yàn)數(shù)據(jù)預(yù)處理的情況,采用插值法擬合空缺的數(shù)據(jù),實(shí)驗(yàn)結(jié)果如圖5所示.
圖4 SQL 語句執(zhí)行情況
圖5 預(yù)處理時(shí)間使用情況
由實(shí)驗(yàn)結(jié)果可以看出,當(dāng)數(shù)據(jù)量較小的時(shí)候,基于SQL Server的傳統(tǒng)航空數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)處理速度優(yōu)于基于Spark的航空信息服務(wù)平臺(tái),但是當(dāng)數(shù)據(jù)量達(dá)到500 MB 時(shí),基于Spark的航空信息服務(wù)平臺(tái)更具優(yōu)勢(shì).通過簡(jiǎn)要分析,基于Spark的航空信息服務(wù)平臺(tái)在接收到數(shù)據(jù)處理任務(wù)時(shí),需要進(jìn)行初始化,節(jié)點(diǎn)通信,資源調(diào)度等,這些將耗費(fèi)一定的時(shí)間和資源,由此可知,在數(shù)據(jù)量小的時(shí)候,大數(shù)據(jù)平臺(tái)很多資源都浪費(fèi)在系統(tǒng)資源開銷上,效率反不如單機(jī)系統(tǒng).但大數(shù)據(jù)在面對(duì)海量數(shù)據(jù)的優(yōu)勢(shì)依舊明顯.另外,大數(shù)據(jù)平臺(tái)可以通過增加集群數(shù)量實(shí)現(xiàn)性能的擴(kuò)展,更能適應(yīng)海軍航空兵數(shù)據(jù)量高速增長(zhǎng)的需要.
本文主要實(shí)現(xiàn)了基于Spark的航空信息服務(wù)平臺(tái)的設(shè)計(jì),采用Hadoop的分布式存儲(chǔ)框架HDFS 以文件形式存儲(chǔ)獲取到的航空數(shù)據(jù),和開源工具Hive 構(gòu)建航空信息數(shù)據(jù)倉(cāng)庫(kù),并詳細(xì)介紹了平臺(tái)3個(gè)主要功能模塊的設(shè)計(jì).另外,本文實(shí)驗(yàn)對(duì)比了航空信息服務(wù)平臺(tái)與傳統(tǒng)航空數(shù)據(jù)倉(cāng)庫(kù)之間的性能對(duì)比.最后,實(shí)驗(yàn)結(jié)果表明,航空信息服務(wù)平臺(tái)在計(jì)算大規(guī)模數(shù)據(jù)上具有明顯優(yōu)勢(shì).但目前航空信息服務(wù)平臺(tái)的業(yè)務(wù)還不完善.未來的主要工作一是增加針對(duì)其他航空信息的業(yè)務(wù)應(yīng)用探索.二是完善針對(duì)海軍各型飛機(jī)的QAR 數(shù)據(jù)譯碼工作.