陸 超,李曉瑜,孫婧博
(1.中國航發(fā)四川燃?xì)鉁u輪研究院 高空模擬技術(shù)重點實驗室,四川 綿陽 621000;2.電子科技大學(xué) 信息與軟件工程學(xué)院,成都 610054;3.中國航發(fā)航空發(fā)動機(jī)研究院,北京 101300)
充分有效地利用航空發(fā)動機(jī)試驗產(chǎn)生的豐富數(shù)據(jù)資源,對發(fā)動機(jī)研發(fā)過程具有重大意義。但由于試驗數(shù)據(jù)體量大、增速快,不同部門間數(shù)據(jù)傳遞效率低下;且傳統(tǒng)的數(shù)據(jù)庫技術(shù)側(cè)重于存儲,對數(shù)據(jù)應(yīng)用的支持有限,不能有效地開展數(shù)據(jù)挖掘與分析工作。同時,發(fā)動機(jī)試驗過程中還會產(chǎn)生一些非傳感器的數(shù)據(jù),如視頻、圖像、文檔等形式的信息,而已有的平臺和技術(shù)難以將這些多媒體數(shù)據(jù)與試驗數(shù)據(jù)相關(guān)聯(lián),因此需要對數(shù)據(jù)進(jìn)行清洗和升維,之后再使用數(shù)據(jù)融合技術(shù),對這些來自各部門的多源異構(gòu)數(shù)據(jù)進(jìn)行整合關(guān)聯(lián)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(如Oracle)對結(jié)構(gòu)化數(shù)據(jù)的存儲較為有效,但隨著數(shù)據(jù)體量的增加、發(fā)動機(jī)研發(fā)需求的提高以及大數(shù)據(jù)技術(shù)的興起,這類數(shù)據(jù)庫面向時序型數(shù)據(jù)時存在效率低下、功能單一等問題,難以滿足發(fā)動機(jī)研發(fā)的業(yè)務(wù)需求。如試驗中針對某次發(fā)動機(jī)故障,往往需要將常規(guī)測試、特種測試、視頻音頻、各專業(yè)的后處理圖表等信息整合后進(jìn)行綜合分析,面對這種情況,關(guān)系型數(shù)據(jù)庫就難以勝任,而通過人工手段將這些割裂的信息關(guān)聯(lián)、整合,費(fèi)時耗力且效果不理想。
本文簡要介紹了航空發(fā)動機(jī)試驗在數(shù)據(jù)存儲和管理上的痛點和新需求,并對航空發(fā)動機(jī)試驗過程中產(chǎn)生的時序型傳感器數(shù)據(jù)的清洗和升維方法進(jìn)行了研究,提出了一種面向航空發(fā)動機(jī)試驗的多源數(shù)據(jù)融合平臺,并對該平臺進(jìn)行了簡要的測試和試驗,驗證了該平臺的技術(shù)可行性。
航空發(fā)動機(jī)在試驗過程中會產(chǎn)生大量的傳感器數(shù)據(jù),這些數(shù)據(jù)由各傳感器以固定的采集頻率獲取,可將其稱為時間序列數(shù)據(jù)。如果和普通數(shù)據(jù)一樣采用關(guān)系型數(shù)據(jù)庫對時間序列數(shù)據(jù)進(jìn)行存儲,將存在諸多弊端,如按時間區(qū)間檢索數(shù)據(jù)的效率較低、支持的查詢功能單一等,且這些傳統(tǒng)的關(guān)系型數(shù)據(jù)庫也難以應(yīng)對傳感器屬性的升維要求。存儲在數(shù)據(jù)庫中的數(shù)據(jù)很難在時間軸上自動對齊,不同設(shè)備下的不同傳感器在數(shù)據(jù)中難以管理。此外,試驗過程中不止產(chǎn)生由傳感器采集到的時序數(shù)據(jù),還會產(chǎn)生一些視頻文件、圖像文件,以及某次試驗后人為產(chǎn)生的分析報告等輸出文檔。如果對這些多源異構(gòu)數(shù)據(jù)按屬性、時間等信息關(guān)聯(lián),難以在現(xiàn)有數(shù)據(jù)平臺下實現(xiàn)。正是由于傳統(tǒng)數(shù)據(jù)庫存在著上述弊端,加之航空發(fā)動機(jī)試驗中又不斷提出新的需求,就要求研發(fā)一種新的數(shù)據(jù)存儲與管理平臺,來提供高效的數(shù)據(jù)讀寫、查詢、檢索及分析功能,并支持對傳感器型數(shù)據(jù)的靈活擴(kuò)展[1]。
IoTDB[2]是一種新型的針對時間序列數(shù)據(jù)的開源數(shù)據(jù)管理引擎。IoTDB 最早由清華大學(xué)大數(shù)據(jù)系統(tǒng)軟件團(tuán)隊研發(fā),并于2018 年捐贈給Apache,隨后進(jìn)行了為期近兩年的孵化,最終于2020 年9 月,由Apache 軟件基金會(ASF)宣布成為Apache 頂級項目。IoTDB 具有時序數(shù)據(jù)收集、存儲與分析一體化的功能,以及體量輕、性能高、易使用的特點。此外,IoTDB 還提供了低硬件成本的存儲解決方案,10 億數(shù)據(jù)點硬盤成本低于1.4 元;高通量的時間序列數(shù)據(jù)讀寫,支持百萬級低功耗連接設(shè)備數(shù)據(jù)接入;面向時間序列的豐富查詢語義,實現(xiàn)跨設(shè)備、跨傳感器的時間序列對齊;能完美對接Hadoop 與Spark 生態(tài),適用于工業(yè)互聯(lián)網(wǎng)應(yīng)用中海量時間序列數(shù)據(jù)高速寫入和復(fù)雜分析查詢的需求。
航空發(fā)動機(jī)試驗過程產(chǎn)生的數(shù)據(jù)為時間序列數(shù)據(jù),由各傳感器按照一定頻率采集得到,這與IoTDB 中所存儲與管理的數(shù)據(jù)類型基本一致。同時,由于IoTDB 國產(chǎn)自主可控,具有存儲成本低、數(shù)據(jù)寫入速度快(百萬數(shù)據(jù)點秒級寫入)、數(shù)據(jù)查詢速度快(TB 級數(shù)據(jù)毫秒級查詢)、功能完備(數(shù)據(jù)的增刪改查、豐富的聚合函數(shù)、相似性匹配)、查詢分析一體化(一份數(shù)據(jù),滿足實時查詢與分析挖掘)、簡單易用等特點,使用IoTDB 作為多源數(shù)據(jù)融合的基礎(chǔ)數(shù)據(jù)存儲與管理平臺將大大提升數(shù)據(jù)存取效率。
對高空試驗數(shù)據(jù)進(jìn)行綜合分析和處理時,通常涉及到試驗傳感器產(chǎn)生的時序數(shù)據(jù)以及相關(guān)試驗場景下產(chǎn)生的視頻文件、圖像文件、分析報告等其他相關(guān)數(shù)據(jù)文件。在確定時序數(shù)據(jù)存儲和管理平臺的基礎(chǔ)上,也需要選擇合適的數(shù)據(jù)平臺對這些非時序型數(shù)據(jù)文件進(jìn)行存儲管理,為此選擇Hadoop 作為數(shù)據(jù)融合的分布式平臺。
Hadoop[3]是一個開源的、高效的分布式計算平臺,可在分布式環(huán)境下為用戶提供海量數(shù)據(jù)的存儲和處理能力。HDFS[4]是Hadoop 的核心模塊之一。當(dāng)1 個文件被存儲到HDFS 中時,它不是作為1 個完整的單一實體存儲,而是被切分成了多個較小的部分(稱為“數(shù)據(jù)塊”),且這些數(shù)據(jù)塊通常具有相同的大小。如HDFS 可能將每個數(shù)據(jù)塊的大小設(shè)定為128 MB,這意味著1 個500 MB 的文件將被切分成4 個128 MB 的數(shù)據(jù)塊和1 個88 MB 的數(shù)據(jù)塊,且這些數(shù)據(jù)塊被存儲在HDFS 集群的多個節(jié)點上。通過將文件的不同部分存儲在不同的節(jié)點上,從而實現(xiàn)數(shù)據(jù)的分布式存儲。為了提高可靠性,每個數(shù)據(jù)塊通常會在集群中的不同節(jié)點上進(jìn)行多次復(fù)制。如1 個數(shù)據(jù)塊可能有3 個副本,每個副本存儲在不同的節(jié)點上。這樣,即使某個節(jié)點發(fā)生故障,文件的該部分?jǐn)?shù)據(jù)也不會丟失。這種將文件切分成等大數(shù)據(jù)塊的方法,使得HDFS 能夠有效地處理和存儲大型文件,同時也便于在集群的不同節(jié)點上并行處理數(shù)據(jù)。通過這種方式,Hadoop 能夠進(jìn)行高效的大數(shù)據(jù)分析和處理。
IoTDB 可無縫支持Hadoop 生態(tài),為此可以通過結(jié)合IoTDB與Hadoop生態(tài)搭建多源數(shù)據(jù)融合平臺。
基于IoTDB 處理時序數(shù)據(jù)時的各種優(yōu)勢以及Hadoop 成熟的生態(tài)及應(yīng)用,提出了一種面向航空發(fā)動機(jī)試驗的多源數(shù)據(jù)融合平臺,該平臺架構(gòu)如圖1所示。數(shù)據(jù)采集端按照一定的采集頻率收集各個傳感器的通道數(shù)據(jù),采集段所獲取的數(shù)據(jù)通過JDBC接口將數(shù)據(jù)存入時序數(shù)據(jù)庫IoTDB 部署的服務(wù)器中;IoTDB 可以將存儲的數(shù)據(jù)定時以TsFile 文件的形式上傳至Hadoop/Spark 集群中,方便后續(xù)進(jìn)行各種數(shù)據(jù)挖掘與數(shù)據(jù)分析操作。為了不影響已有業(yè)務(wù),存入IoTDB 的數(shù)據(jù)來自于原來存儲時序數(shù)據(jù)的數(shù)據(jù)庫,這樣IoTDB 中的數(shù)據(jù)并不是實時的,因此IoTDB 中的數(shù)據(jù)主要用于數(shù)據(jù)挖掘與分析。虛線方框部分為平臺的大數(shù)據(jù)集群框架,圖中只給出了4個節(jié)點,包括3 個數(shù)據(jù)節(jié)點和1 個主節(jié)點,實際應(yīng)用中節(jié)點數(shù)量可以根據(jù)自身需求和數(shù)據(jù)量來分配[5]。
圖1 發(fā)動機(jī)簡化模型Fig.1 Simplified engine model
對于文本、圖片、視頻、音頻、附件等非結(jié)構(gòu)化數(shù)據(jù),可直接存儲在Hadoop 生態(tài)下的分布式文件系統(tǒng)HDFS 中。使用MapReduce 或Spark 對平臺下存放的各種數(shù)據(jù)進(jìn)行分析處理,整個平臺提供數(shù)據(jù)存儲、數(shù)據(jù)清洗、數(shù)據(jù)融合、機(jī)器學(xué)習(xí)、大數(shù)據(jù)分析等功能。通過Ambari[6-8]對集群進(jìn)行管理。Ambari 是一種支持Hadoop 集群部署、監(jiān)控和管理的開源工具,相較于傳統(tǒng)手工部署方式,其極大地提高了Hadoop 集群部署的效率。在本文提出的多源數(shù)據(jù)融合平臺中,Ambari 被單獨(dú)部署在另外1臺服務(wù)器中(分布式集群的監(jiān)控主機(jī))。Ambari 對服務(wù)器性能要求不高,通過Ambari 可監(jiān)控集群狀態(tài)和進(jìn)行節(jié)點管理,如節(jié)點的新增和刪除,以及集群組件的部署安裝。Ambari 以Web 形式提供相應(yīng)的服務(wù),通過外接顯示器可視化展示集群狀態(tài)。
為了驗證IoTDB 存儲成本低的特性,對存儲在IoTDB 中時序數(shù)據(jù)所占硬盤容量的大小進(jìn)行相應(yīng)的測試。假設(shè)傳感器數(shù)目為500,且1 min 采樣50 次,對500 個傳感器的插入進(jìn)行測試,插入10 000條數(shù)據(jù)大約32.4 MB,平均插入1條數(shù)據(jù)約3.3 KB,為了直觀地展示500 個傳感器在采樣頻率為50 Hz 的情況下所產(chǎn)生的時序數(shù)據(jù)在IoTDB 中的存儲容量隨時間變化的特點,表1 以不同刻度的時間對比展示出了容量變化??煽闯?,傳感器無休止地采集數(shù)據(jù)1 年,數(shù)據(jù)所占硬盤容量僅需82 GB。顯然,在實際的航空發(fā)動機(jī)研制過程中,傳感器并不是無休止地采集數(shù)據(jù),因此實際所占容量只會比這更小,由此驗證了IoTDB 低存儲成本的特性。
表1 時序數(shù)據(jù)在IoTDB 中容量變化Table 1 Time series data capacity changes in IoTDB
對IoTDB 的數(shù)據(jù)檢索效率進(jìn)行對比測試,對比數(shù)據(jù)庫為MangoDB,對比結(jié)果如表2 所示。MangoDB 從1 個表中隨機(jī)查詢150 條數(shù)據(jù),總共耗時596 s,平均查詢1 條數(shù)據(jù)耗時4 s。而IoTDB 的數(shù)據(jù)查詢效率為毫秒級,隨機(jī)以時間戳為條件查詢1 條數(shù)據(jù),耗時在10~100 ms。相較于被廣泛使用的NoSQL 數(shù)據(jù)庫MangoDB,查詢效率明顯提高,由此驗證了IoTDB 高效的時序數(shù)據(jù)檢索效率[9-10]。
表2 IoTDB 與MangoDB 檢索耗時對比Table 2 Comparison of retrieval time between IoTDB and MangoDB
使用IoTDB 創(chuàng)建時間序列時,可以為其添加別名及額外的標(biāo)簽和屬性信息。在IoTDB 中,標(biāo)簽和屬性的唯一區(qū)別是,IoTDB 為標(biāo)簽信息在內(nèi)存中維護(hù)了1 個倒排索引,可以通過設(shè)置的標(biāo)簽信息作為查詢條件對通道信息(即傳感器信息)進(jìn)行查詢。為此,可以使用IoTDB 提供的標(biāo)簽存儲數(shù)據(jù)升維后的各個屬性,標(biāo)簽值為對應(yīng)的屬性值。在實際的試驗測試中發(fā)現(xiàn),IoTDB 在通道數(shù)為2 000 時以標(biāo)簽信息來查詢所匹配的通道的效率也是毫秒級,單次查詢平均為幾十毫秒。
航空發(fā)動機(jī)試驗數(shù)據(jù)在進(jìn)入IoTDB 數(shù)據(jù)庫存儲與管理前,需要經(jīng)過數(shù)據(jù)接入、數(shù)據(jù)清洗及數(shù)據(jù)升維3 個步驟,如圖2 所示[11]。數(shù)據(jù)升維是數(shù)據(jù)由單一“數(shù)值”變?yōu)椤岸嗑S數(shù)據(jù)”的蛻變過程,其主要內(nèi)容是通過什么樣的方法和規(guī)則、對數(shù)據(jù)增加哪些屬性。原有數(shù)據(jù)系統(tǒng)在設(shè)計和存儲形式上難以對數(shù)據(jù)屬性進(jìn)行升維,也無法提供快速的針對航空發(fā)動機(jī)試驗數(shù)據(jù)的基于屬性的查詢。根據(jù)航空發(fā)動機(jī)專業(yè)特點擬定了升維屬性條目,主要包含基本屬性、測試屬性、表達(dá)屬性、應(yīng)用屬性、關(guān)聯(lián)屬性等類別,并對原始數(shù)據(jù)庫的屬性進(jìn)行擴(kuò)充,以此構(gòu)建內(nèi)涵更加豐富的數(shù)據(jù),為實現(xiàn)多數(shù)據(jù)檢索數(shù)據(jù)功能及數(shù)據(jù)關(guān)聯(lián)研究提供了保證。而屬性升維通過IoTDB 提供的標(biāo)簽點功能來實現(xiàn),IoTDB 為標(biāo)簽信息在內(nèi)存中維護(hù)了1 個倒排索引,據(jù)此可使用標(biāo)簽作為查詢條件快速檢索內(nèi)容。通過對升維后的屬性進(jìn)行關(guān)聯(lián),可以將包含相同屬性內(nèi)容的傳感器關(guān)聯(lián)起來,并提供基于升維后屬性的多條件查詢功能。
圖2 基于IoTDB 的數(shù)據(jù)清洗與升維流程圖Fig.2 Data cleaning and dimension improvement flow chart based on IoTDB
為解決傳統(tǒng)航空發(fā)動機(jī)試驗過程中多源異構(gòu)數(shù)據(jù)難以得到充分、有效利用的不足,提出一種面向航空發(fā)動機(jī)試驗的多源數(shù)據(jù)融合平臺。該平臺以開源時序型數(shù)據(jù)庫IoTDB 和大數(shù)據(jù)存儲與分析平臺Hadoop/Spark 為核心組件構(gòu)建,不僅能對傳感器采集的時間序列數(shù)據(jù)進(jìn)行高效的存儲、檢索、管理和分析,還能對發(fā)動機(jī)試驗中產(chǎn)生的各種非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分布式存儲和處理。對IoTDB 性能和功能的測試表明,IoTDB 能滿足面向航空發(fā)動機(jī)試驗的多源異構(gòu)數(shù)據(jù)融合的需求。最后,基于IoTDB 數(shù)據(jù)平臺,對航空發(fā)動機(jī)試驗過程中產(chǎn)生的時間序列型數(shù)據(jù)的清洗、升維方法進(jìn)行了測試和驗證,證明以該平臺為依托,可以構(gòu)建面向航空發(fā)動機(jī)試驗的大數(shù)據(jù)生態(tài)。