高 健,魏 峻,許利杰,汪保龍,楊富學(xué),黃驍飛
1.中國科學(xué)院軟件研究所軟件工程技術(shù)研發(fā)中心,北京100190
2.中國科學(xué)院大學(xué),北京100049
3.北京電子工程總體研究所,北京100039
隨著計算機技術(shù)、傳感器技術(shù)、物聯(lián)網(wǎng)技術(shù)的發(fā)展,工業(yè)領(lǐng)域正前所未有地創(chuàng)造著大量數(shù)據(jù),對于工業(yè)領(lǐng)域而言,大數(shù)據(jù)帶來了潛在價值的同時,也同時帶來了巨大的挑戰(zhàn)[1]。大數(shù)據(jù)的挑戰(zhàn)之一在于如何能在數(shù)據(jù)快速產(chǎn)生的同時實現(xiàn)數(shù)據(jù)快速存儲管理,這對于數(shù)據(jù)的價值挖掘有重要作用,對于提升裝備制造能力也具有重要意義。
研究裝備大數(shù)據(jù)管理首先應(yīng)研究裝備數(shù)據(jù)特點,裝備具有“多樣性、大規(guī)模、高頻性、時序性、高價值性”的數(shù)據(jù)特點[2-3],這里以航空航天裝備數(shù)據(jù)為例說明。(1)多樣性:裝備在研制生產(chǎn)的過程中經(jīng)歷多個過程,包括設(shè)計、研發(fā)、試驗、生產(chǎn)、使用和維護(hù)等,每一個過程又有多個種類的子過程,如飛機的試驗包括發(fā)動機上電和點火試驗、燃油系統(tǒng)的適墜性試驗、輪胎爆破試驗、疲勞試驗、地面滑行試驗等[4-5]。(2)大規(guī)模:裝備結(jié)構(gòu)復(fù)雜,特別是高端裝備內(nèi)部有數(shù)十個分系統(tǒng)、上百個子系統(tǒng)、成千上萬個裝備部件,一顆衛(wèi)星、一架飛機可采集的參數(shù)往往有上萬個,一個型號一次試驗就能采集幾十GB 的數(shù)據(jù),因此數(shù)據(jù)量巨大。(3)高頻性:隨著傳感器技術(shù)和傳輸網(wǎng)絡(luò)的發(fā)展,數(shù)據(jù)的采集和傳輸頻率特別高,如飛機總線協(xié)議ARINC664 采用全雙工通信模式,帶寬可達(dá)100 Mbit/s,終端數(shù)量理論無上限,采用這種協(xié)議采集的數(shù)據(jù)頻率可達(dá)納秒級[6-7]。(4)時序性:裝備數(shù)據(jù)是強時序的,這也是與互聯(lián)網(wǎng)數(shù)據(jù)的區(qū)別所在,互聯(lián)網(wǎng)數(shù)據(jù)一般是龐雜且是離散的,裝備數(shù)據(jù)一般是規(guī)則的且時序的,對于裝備數(shù)據(jù)的使用往往也具備較強的時序性特征。(5)高價值性:裝備在研制生產(chǎn)過程中產(chǎn)生的龐大數(shù)據(jù)量整體是高價值的,在工業(yè)生產(chǎn)的各個環(huán)節(jié),數(shù)據(jù)直接反映裝備質(zhì)量,通過數(shù)據(jù)可以發(fā)現(xiàn)并排除裝備研制生產(chǎn)過程中存在的隱患。
為解決裝備大數(shù)據(jù)的存儲管理問題,各界學(xué)者及工業(yè)部門開展了大量的研究與實踐。但是,一個不容忽視的現(xiàn)實是,裝備數(shù)據(jù)作為企業(yè)的重要核心資產(chǎn),往往掌握在某些公司甚至某些部門手里,幾乎不能與外人分享,因此對于大數(shù)據(jù)存儲管理研究的大量成果,難以實現(xiàn)真正的驗證與應(yīng)用,對于某些在工業(yè)制造中出現(xiàn)的實際問題也沒有解決辦法。
迄今為止,我國裝備數(shù)據(jù)存儲管理方式主要有兩種:一是將數(shù)據(jù)以原始文件的形式存儲在硬盤上,數(shù)據(jù)“現(xiàn)用現(xiàn)解析”[8];二是數(shù)據(jù)解析后存儲在關(guān)系型數(shù)據(jù)庫中,形成數(shù)據(jù)資產(chǎn)庫和數(shù)據(jù)倉庫。兩種存儲都是傳統(tǒng)的數(shù)據(jù)管理模式,在應(yīng)對大數(shù)據(jù)方面都有一定的不足之處。使用文件的方式存儲,難以針對大量數(shù)據(jù)進(jìn)行更進(jìn)一步的復(fù)雜分析,無法有效洞悉數(shù)據(jù)的內(nèi)在價值。使用關(guān)系型數(shù)據(jù)庫存儲,由于數(shù)據(jù)庫本身的限制,從技術(shù)上不得不將數(shù)據(jù)存儲表切割,進(jìn)行大規(guī)模的分表和分庫,以緩解海量數(shù)據(jù)帶來的存儲壓力。但是分表分庫會帶來非常高的成本,特別是數(shù)據(jù)檢索效率很低,在眾多類型的裝備數(shù)據(jù)不斷累積的背景下,這種方式顯然已經(jīng)無法滿足當(dāng)前的需求。
針對裝備數(shù)據(jù)的特點,需要這樣一種數(shù)據(jù)存儲管理方式,首先要解決裝備數(shù)據(jù)多樣性和大規(guī)模特點,能夠從生產(chǎn)過程、裝備組成等多個維度存儲海量數(shù)據(jù);其次要能有效存儲高頻數(shù)據(jù),對不同頻率的數(shù)據(jù)進(jìn)行分類存儲;最后要能較好地支持?jǐn)?shù)據(jù)的時序性特征。
為解決以上描述問題,本文提出了基于預(yù)分區(qū)策略的分布式存儲方法,該方法使用分布式列式存儲管理海量裝備數(shù)據(jù),可以實現(xiàn)數(shù)據(jù)存儲的負(fù)載均衡,并提高數(shù)據(jù)存儲效率;在數(shù)據(jù)模型方面,提出了基于列式存儲結(jié)構(gòu)的裝備數(shù)據(jù)的分布式存儲模型,定義了數(shù)據(jù)的鍵值對存儲結(jié)構(gòu),有效解決單次TB 級裝備數(shù)據(jù)的存儲問題;在存儲過程方面,提出了一種基于列式數(shù)據(jù)預(yù)分區(qū)策略,進(jìn)而解決海量裝備數(shù)據(jù)的高速存儲問題,實現(xiàn)TB 級裝備數(shù)據(jù)在15 min 內(nèi)完成存儲。
分布式數(shù)據(jù)存儲技術(shù)是大數(shù)據(jù)的典型技術(shù)之一[9],其核心是將數(shù)據(jù)分散地存儲在多臺服務(wù)器設(shè)備上,這樣一方面可以減少因數(shù)據(jù)量過大而造成的對單一服務(wù)的高負(fù)載,另一方面也可以提高數(shù)據(jù)整體的安全性、可靠性和存儲效率,同時也可以提高數(shù)據(jù)存儲的可擴展能力[10-11]。
以Hadoop 為代表的開源大數(shù)據(jù)技術(shù)的問世,快速推動了分布式存儲技術(shù)的發(fā)展,HBase作為Hadoop架構(gòu)下的分布式列式數(shù)據(jù)庫,其內(nèi)在的分布式元數(shù)據(jù)管理架構(gòu)可以將數(shù)據(jù)分散地存儲在多個節(jié)點上,進(jìn)而解決了數(shù)據(jù)集中存儲帶來的瓶頸問題[12-13]。本文也是基于HBase 的分布式存儲模式展開裝備數(shù)據(jù)快速存儲策略的討論,在該模式中,裝備海量工程值數(shù)據(jù)可以<key,value>的數(shù)據(jù)格式快速地存儲在每個存儲節(jié)點上,每個節(jié)點的每個HRegion 分散地承擔(dān)數(shù)據(jù)存儲任務(wù)。
在HBase 的設(shè)計中,每一個Region 作為一個單獨的存儲單元,用于數(shù)據(jù)的分區(qū)存儲管理。每一個數(shù)據(jù)管理節(jié)點都分配一個Region server,用于管理若干個Region,Region server 和Region 是一對多的關(guān)系[14]。而Region 下面可以創(chuàng)建若干個store,每一個store 對應(yīng)存儲每一個Hfile,Region 和store 是一對多的關(guān)系。HBase 自身設(shè)計了一套自動分區(qū)機制,包含多種自動分區(qū)策略,能夠在海量數(shù)據(jù)存入HBase 時,將數(shù)據(jù)平均存儲在多個Region 中,進(jìn)而實現(xiàn)數(shù)據(jù)在多臺機器上的負(fù)載均衡。
HBase 分區(qū)策略的核心思想是通過判斷hfile 是否超出了一定的閾值(Region 的存儲能力),當(dāng)達(dá)到閾值時Region 會進(jìn)行裂變,HBase 的機制是選取Region 中間key 值,然后保留startkey 和endkey,將區(qū)間一分為二,新生成的Region 會重新掛載在Region server中,最后匯報給HBase中的master。
裝備數(shù)據(jù)具有大規(guī)模、高頻性、時序性等特征,但在裝備不同的生命周期有所差異,如試驗階段需要大量數(shù)據(jù)進(jìn)行裝備功能和性能分析,因此特征最為明顯。裝備數(shù)據(jù)往往是以二進(jìn)制方式進(jìn)行傳輸處理的,圖1 給出了某型號飛機和某型號飛行產(chǎn)生的數(shù)據(jù)示例,表1 對裝備數(shù)據(jù)特征進(jìn)行了說明,從數(shù)據(jù)來源階段、數(shù)據(jù)量、數(shù)據(jù)頻率、數(shù)據(jù)格式、數(shù)據(jù)組成、參數(shù)數(shù)量、數(shù)據(jù)相關(guān)性、數(shù)據(jù)標(biāo)簽等方面進(jìn)行了特征說明。
本文研究基于HBase 預(yù)分區(qū)策略的裝備數(shù)據(jù)快速存儲的框架,該框架的主要目標(biāo)是實現(xiàn)裝備數(shù)據(jù)在HBase 中進(jìn)行快速而均衡的數(shù)據(jù)存儲,該框架以快速存儲中間件為核心,內(nèi)置HBase 自動化預(yù)分區(qū)模塊,針對經(jīng)過預(yù)處理后的格式化裝備數(shù)據(jù),實現(xiàn)數(shù)據(jù)快速存儲。
Fig.1 Initial data format of aircraft圖1 飛行器初采數(shù)據(jù)格式
Table 1 Data characteristics表1 數(shù)據(jù)特征
圖2 展示了裝備數(shù)據(jù)快速存儲的框架。在數(shù)據(jù)處理層中,數(shù)據(jù)經(jīng)過準(zhǔn)備、預(yù)處理和數(shù)據(jù)解析之后,數(shù)據(jù)進(jìn)入到中間件層。中間件層的作用是在數(shù)據(jù)處理層和數(shù)據(jù)存儲層之間搭建一個服務(wù)層,能夠?qū)⒔馕鲋蟮臄?shù)據(jù)按照需求進(jìn)行快速處理和存儲。中間件層包含四個模塊,分別是數(shù)據(jù)標(biāo)準(zhǔn)化模塊、關(guān)鍵信息采集模塊、HBase 預(yù)分區(qū)處理模塊、HBase 服務(wù)接口模塊。其中,數(shù)據(jù)標(biāo)準(zhǔn)化模塊的作用是將不同類型的裝備數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化格式處理,形成可以存儲在HBase 數(shù)據(jù)庫中的數(shù)據(jù)格式;HBase 預(yù)分區(qū)模塊實現(xiàn)基于裝備模型的HBase 的預(yù)分區(qū)規(guī)則,執(zhí)行規(guī)則算法;關(guān)鍵信息采集模塊可以將預(yù)分區(qū)所需要的數(shù)據(jù)從原始數(shù)據(jù)文件、數(shù)據(jù)配置文件、集群環(huán)境中進(jìn)行采集;HBase 服務(wù)訪問接口提供標(biāo)準(zhǔn)的HBase 數(shù)據(jù)庫訪問服務(wù)。通過中間件層的數(shù)據(jù)存儲優(yōu)化過程執(zhí)行后,HBase 會根據(jù)命令執(zhí)行相應(yīng)的預(yù)分區(qū)操作,并接收中間件層下發(fā)的數(shù)據(jù)存儲命令。本文主要完成了中間件層以下的相關(guān)工作,通過研究自動化預(yù)分區(qū)算法實現(xiàn)數(shù)據(jù)的快速存儲。
Fig.2 Fast storage framework for equipment data圖2 裝備數(shù)據(jù)快速存儲框架
由于裝備在短時間內(nèi)可產(chǎn)生大量數(shù)據(jù),如某型號飛機在一次飛行任務(wù)里可產(chǎn)生10 億~100 億條數(shù)據(jù),傳統(tǒng)關(guān)系型數(shù)據(jù)庫一張表的存儲上限為千萬級,數(shù)據(jù)量過億后查詢效率大大降低。而使用大規(guī)模的分表分庫會提升管理成本,同時也會降低跨時間域、參數(shù)域的數(shù)據(jù)檢索效率。因此采用分布式列式數(shù)據(jù)庫,可以同時解決海量裝備數(shù)據(jù)的高速存儲問題和快速查詢問題。
在分布式存儲設(shè)計中,首先建立基于HBase 的數(shù)據(jù)存儲模型,這影響著數(shù)據(jù)分區(qū)規(guī)則的制定。HBase的數(shù)據(jù)存儲是key/value 形式的,每一條信息使用rowkey作為索引,而HBase的分區(qū)機制是使用rowkey的前置字符作為分區(qū)邊界[15]。因此,如何基于裝備數(shù)據(jù)存儲模型實現(xiàn)自適應(yīng)的預(yù)分區(qū)機制,將是整個研究的基礎(chǔ)。當(dāng)然,裝備數(shù)據(jù)存儲模型的建立依托于分布式數(shù)據(jù)庫HBase和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。
以飛行器為例,一般的飛行器信息如飛行器表、飛行器型號表、飛行器分系統(tǒng)表、飛行器參數(shù)表仍然使用關(guān)系型數(shù)據(jù)庫管理,而產(chǎn)生大量數(shù)據(jù)的飛行器參數(shù)值表需要使用分布式數(shù)據(jù)庫進(jìn)行管理,也就是需要對其建立分布式數(shù)據(jù)存儲結(jié)構(gòu)。在分布式數(shù)據(jù)庫HBase 中建立飛行器參數(shù)工程值表,實現(xiàn)飛行器數(shù)據(jù)存儲方式的重構(gòu),完成數(shù)據(jù)模型的建立。對于rowkey 中索引的唯一標(biāo)識,需要飛行器飛行任務(wù)、參數(shù)數(shù)據(jù)時間戳、參數(shù)名進(jìn)行組合實現(xiàn)唯一標(biāo)識索引,而value 中需要存儲每一個參數(shù)每一條數(shù)據(jù)的數(shù)值,將數(shù)據(jù)碎片化存儲。值得注意的是,這里不使用HBase 的列族,原因是會降低表的檢索效率[16]。這樣,就完成了裝備數(shù)據(jù)存儲模型的最初形態(tài)。參數(shù)值如表2 所示。
Table 2 Aircraft parameter value表2 飛行器參數(shù)值表
HBase 是以key/value 的結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲的[17],其分區(qū)機制是通過數(shù)據(jù)表的rowkey 值進(jìn)行分割的,HBase本身的分區(qū)機制存在以下不足。
(1)HBase 分區(qū)策略會導(dǎo)致數(shù)據(jù)存儲上的分配不均衡,對于數(shù)據(jù)如何分配才最合理需要有經(jīng)驗的工程師進(jìn)行干預(yù)。假設(shè)有10 GB的裝備試驗數(shù)據(jù),如圖3所示場景,如果工程師將HBase Region 的分裂閾值設(shè)置成10 GB,數(shù)據(jù)就會在單個Region server 中集中存儲,導(dǎo)致其他資源閑置,集群資源極大浪費;如圖4所示場景,如果工程師設(shè)置的Region 閾值過小,導(dǎo)致Region 閾值與數(shù)據(jù)容量比值過小,數(shù)據(jù)分配給1 000個Region 進(jìn)行分布式存儲,過多的分區(qū)會開啟過多的并發(fā)任務(wù),占用過多的計算資源,會影響數(shù)據(jù)的寫入速度。
Fig.3 Uneven data distribution leading to idle and wasted server resources圖3 數(shù)據(jù)分配不均導(dǎo)致服務(wù)器資源閑置浪費
Fig.4 Too many data partitions affecting storage performance圖4 過多的數(shù)據(jù)分區(qū)影響存儲性能
(2)HBase 的分區(qū)機制是Region 不停地進(jìn)行split裂變操作,進(jìn)行裂變的Region 需要不斷地進(jìn)行下線、創(chuàng)建、寫入、重新掛載、匯報master 等過程,造成大量的資源負(fù)載,增加系統(tǒng)開銷,數(shù)據(jù)量過大時還會導(dǎo)致系統(tǒng)崩潰。
這里設(shè)計自動化預(yù)分區(qū)的機制,在設(shè)計的裝備參數(shù)值表中可以判斷,需要將唯一標(biāo)識“任務(wù)編號+參數(shù)名+時間戳”進(jìn)行多段分割,以達(dá)到數(shù)據(jù)分布式存儲的目的。而針對數(shù)據(jù)設(shè)計模型,可以選擇按參數(shù)名進(jìn)行分區(qū)或者按時間戳進(jìn)行分區(qū),具體選擇哪種分區(qū)方法,需要研究數(shù)據(jù)的本身,如不同采樣周期的參數(shù)數(shù)量和數(shù)據(jù)樣本量,找出相關(guān)的影響因子,從而做出正確的選擇。
這里以某型號飛行器為例,圖4 統(tǒng)計了某型號飛行器一次飛行試驗任務(wù)數(shù)據(jù),分別統(tǒng)計了不同采樣率和采樣周期下的參數(shù)數(shù)量。在這個樣本數(shù)據(jù)中,共有3 萬多個采集參數(shù)點,參數(shù)點的采樣周期從最小的0.1 ms 到最大的4 000 ms 不等,由圖5(b)可以發(fā)現(xiàn),2 000 ms 的采樣周期上共有2 萬多個采集參數(shù)點,也就是說大多數(shù)的參數(shù)點只有0.5 Hz 的采集頻率。而由圖5(a)所示,有少數(shù)樣本參數(shù)的采集頻率達(dá)到了8 000 Hz,單位時間內(nèi)可產(chǎn)生大量數(shù)據(jù),因此對于工業(yè)裝備而言,由于傳感器設(shè)置的差異,會導(dǎo)致即使在相同的時間內(nèi),參數(shù)樣本數(shù)量差異很大,大樣本參數(shù)0.5 Hz 與小樣本參數(shù)8 000 Hz 差了16 000 倍的數(shù)據(jù)量,因此說數(shù)據(jù)極不平衡,在數(shù)據(jù)處理和存儲過程中需要考慮數(shù)據(jù)傾斜問題。
更進(jìn)一步地,需要在數(shù)據(jù)預(yù)處理的過程中計算出每個樣本參數(shù)點在存儲過程中產(chǎn)生的數(shù)據(jù)量,用于分區(qū)策略的判定標(biāo)準(zhǔn)。圖6(a)展示了樣本數(shù)據(jù)在25 個采樣周期下最大的數(shù)據(jù)量值,也就是在每一個點統(tǒng)計了最大數(shù)據(jù)存儲量值的參數(shù)。圖6(a)記錄了一幀數(shù)據(jù)的大小,根據(jù)存儲模型可知,一幀記錄數(shù)據(jù)量大小sr=f(rowkey,column,cell)=(任務(wù)單編號+參數(shù)名+時間戳+參數(shù)名+時間戳+參數(shù)值)。圖6(b)展示了在1.5 h 的飛行任務(wù)下每個采集參數(shù)點產(chǎn)生的樣本量,其中橫坐標(biāo)表示樣本參數(shù)序號,橫坐標(biāo)軸下方是對應(yīng)了每個序號參數(shù)的采樣周期。通過圖可以看到,采樣周期為0.2 ms 和0.1 ms 的參數(shù)樣本量很大,0.1 ms 周期的參數(shù)產(chǎn)生了3 GB 的數(shù)據(jù)量。由于HBase 的Region 需要設(shè)有一定的閾值,數(shù)據(jù)量超過閾值后要進(jìn)行分區(qū)存儲,因此需要將參數(shù)數(shù)據(jù)量納入影響因子進(jìn)行研究。
Fig.5 Sample data analysis of aircraft flight test圖5 飛行器飛行試驗樣本數(shù)據(jù)分析
Fig.6 Flight data statistics of aircraft圖6 飛行器飛行數(shù)據(jù)量統(tǒng)計
因此,針對飛行器數(shù)據(jù)模型的分布式存儲,可以歸納出自動化預(yù)分區(qū)機制的影響因子,由表3 可知,影響因子包括裝備參數(shù)數(shù)量、裝備參數(shù)、裝備各個參數(shù)采樣率、任務(wù)總時間、單參數(shù)單條記錄數(shù)據(jù)量、HBase 中Region 的裂變邊界值。同樣表3 中也給出了影響因子的表達(dá)符號、影響行為說明和相應(yīng)的數(shù)據(jù)來源。
列式存儲自動化預(yù)分區(qū)算法的目的是讓裝備數(shù)據(jù)快速而又均衡地存儲在每一個節(jié)點上[18],解決HBase 自動分區(qū)產(chǎn)生存儲效率低下或是資源閑置問題。此工作若人工進(jìn)行,工作量較大、難度較高[19]。因此自動化預(yù)分區(qū)的目的就是通過計算機的計算能力實現(xiàn)海量裝備數(shù)據(jù)負(fù)載均衡的、快速的存儲,如圖6 所示。
表2 給出了裝備參數(shù)數(shù)據(jù)的分布式存儲模型,其唯一標(biāo)識rowkey 組成為“任務(wù)編號+參數(shù)名+時間戳”。HBase 的分區(qū)規(guī)則是給不同的區(qū)間Region 設(shè)置起止索引,即“startkey”和“endkey”,這些key 值都是由字符串組成,也就是說,每一條數(shù)據(jù)存儲在哪一個分區(qū)中,是由每一條數(shù)據(jù)的rowkey 決定的,取決于rowkey 的前置字節(jié)落在哪一個的startkey 和endkey區(qū)間之內(nèi)。
一般來講,由于裝備制造過程復(fù)雜、數(shù)據(jù)類型多樣、數(shù)據(jù)量龐大,HBase 的一張表中無法存儲大量數(shù)據(jù),需要將數(shù)據(jù)進(jìn)行分區(qū)存儲,分區(qū)方法可以分為按參數(shù)名分區(qū)和按時間戳分區(qū)兩種。按參數(shù)名分區(qū),不同的參數(shù)將會分到不同的Region 中,同一個參數(shù)所有的時間段數(shù)據(jù)相鄰存儲;按時間戳進(jìn)行分區(qū),不同時間段的數(shù)據(jù)分到不同的Region 中,同一個時間戳下所有參數(shù)數(shù)據(jù)相鄰存儲。如何進(jìn)行選擇,需要通過數(shù)學(xué)模型進(jìn)行計算,通過參數(shù)量值的計算決定使用哪種分區(qū)方法。圖7 在圖6(b)的基礎(chǔ)上增加Region size 閾值線,可以看到,由于某些參數(shù)采樣率非常高,一次任務(wù)數(shù)據(jù)量可達(dá)數(shù)個GB,如果HBase 的Region size 小于某一參數(shù)的數(shù)據(jù)量,就不宜按參數(shù)進(jìn)行分區(qū),應(yīng)該按時間戳分區(qū),因為一個分區(qū)設(shè)置無法存儲一個參數(shù)的數(shù)據(jù),如果HBase 的Region size 大于全部參數(shù)的數(shù)據(jù)量,可以按參數(shù)進(jìn)行分區(qū)。
Table 3 Influence factor of automated pre-partition of industry equipment data表3 裝備數(shù)據(jù)自動化預(yù)分區(qū)影響因子
Fig.7 Comparison diagram of Region size and Data size圖7 Region size和Data size的對比圖
預(yù)分區(qū)算法流程如圖8 所示。開始階段需要讀取樣本數(shù)據(jù)文件中的參數(shù)采樣率、采樣時間、計算最大參數(shù)存儲量,同時要獲取存儲環(huán)境中的HRegion 閾值。接下來需要考慮兩種情況:
第一種情況:按參數(shù)名進(jìn)行分區(qū),將不同的參數(shù)數(shù)據(jù)按參數(shù)名均勻地劃分存儲在HBase 所有的Region中。判斷條件是所有參數(shù)中采樣率最高的參數(shù)數(shù)據(jù)量小于一個Region 設(shè)置的最大值,換言之,需要保證一個Region 至少能存下一個參數(shù)的完整數(shù)據(jù)。
第二種情況:按時間戳進(jìn)行分區(qū),判斷條件是存在某一個或多個參數(shù)數(shù)據(jù)量大于一個Region 設(shè)置的最大值,換言之,無法保證一個Region 至少能存下一個參數(shù)點的完整數(shù)據(jù),某些數(shù)據(jù)會溢出Region 的空間。
預(yù)分區(qū)算法偽代碼如下:
Fig.8 Flowchart of pre-partitioning algorithm圖8 預(yù)分區(qū)算法流程圖
經(jīng)過執(zhí)行自動化預(yù)分區(qū)算法,飛行器的數(shù)據(jù)可以快速并均勻地存儲在HBase 的分布式表中,能夠適配每次試驗任務(wù)的變化,能夠解決數(shù)據(jù)的變化帶來的數(shù)據(jù)存儲效率問題和服務(wù)器負(fù)載不均衡問題。
試驗環(huán)境如表4 所示,集群采用Hadoop 大數(shù)據(jù)架構(gòu)進(jìn)行構(gòu)建,使用的是華為公司的FusionInsight 1.0 管理系統(tǒng)版本,集群系統(tǒng)包括22 個服務(wù)器節(jié)點(其中2 個調(diào)度節(jié)點、19 個計算和存儲節(jié)點、1 臺應(yīng)用服務(wù)器)。調(diào)度服務(wù)器節(jié)點的配置為(2×Intel Xeon 4C Processor Model E5-2609v2 2.5 GHz,RAM 512 GB),計算服務(wù)器節(jié)點的配置為(2×Intel Xeon 4C Processor Model E5-2609v2 2.5 GHz,RAM 128 GB),集群環(huán)境還包括一個核心交換機和一個千兆交換機,網(wǎng)絡(luò)帶寬為1 000 Mbit/s。在集群環(huán)境中,兩臺調(diào)度節(jié)點配置為一主一備的熱備份方式,防止單點故障,19 臺計算和存儲節(jié)點不進(jìn)行虛擬化操作,每臺機器包括2 顆CPU,每臺計算和存儲節(jié)點的CPU 可以在非虛擬化環(huán)境下做超線程。在19 臺計算節(jié)點上部署HBase 數(shù)據(jù)庫用于數(shù)據(jù)的分布式存儲,每臺節(jié)點部署Region Server 和Region 環(huán)境,在試驗過程中,所有的節(jié)點同時進(jìn)行數(shù)據(jù)寫入操作,存儲過程也不存在單點故障。中間件部署在應(yīng)用服務(wù)器上,和集群環(huán)境進(jìn)行集成,用于實現(xiàn)裝備數(shù)據(jù)的快速存儲優(yōu)化。
本節(jié)的目標(biāo)是評價自動預(yù)分區(qū)模型的存儲性能,將提出的基于HBase 的自動化預(yù)分區(qū)策略數(shù)據(jù)快速存儲模型與HBase 已有的自動分區(qū)機制進(jìn)行對比。數(shù)據(jù)方面選取了某型號飛行器8 次飛行試驗任務(wù)數(shù)據(jù),并對其中部分?jǐn)?shù)據(jù)進(jìn)行了裁剪,使數(shù)據(jù)(原始數(shù)據(jù))覆蓋度從159 MB 至90 GB。
表5 列出了8 次數(shù)據(jù)存儲試驗的結(jié)果。如表所示,每次試驗選取不同的數(shù)據(jù)量、不同的參數(shù)數(shù)量,并給出了每次試驗的數(shù)據(jù)膨脹之后的數(shù)據(jù)大小,如159 MB 數(shù)據(jù)解析之后膨脹到2.5 GB,90 GB 數(shù)據(jù)解析之后膨脹到1.5 TB。在存儲效率上計算數(shù)據(jù)從Hfile 進(jìn)入到HBase 的時間,并將模型與HBase 自動分區(qū)機制進(jìn)行對比。如表可以發(fā)現(xiàn),當(dāng)原始數(shù)據(jù)量超過20 GB 以后,HBase 分區(qū)機制無法對數(shù)據(jù)進(jìn)行存儲,而自動預(yù)分區(qū)模型可以完成所有試驗數(shù)據(jù)的存儲。并且當(dāng)數(shù)據(jù)量不大的時候,相比較HBase 自帶的分區(qū)機制,預(yù)分區(qū)策略明顯有更加優(yōu)秀的性能。
Table 4 Experimental environment表4 試驗環(huán)境
從表5 中可以看出,與HBase 分區(qū)機制相比,預(yù)分區(qū)策略相比之下有更加優(yōu)秀的性能,且隨著數(shù)據(jù)量的遞增,使用預(yù)分區(qū)策略沒有明顯的性能衰減,而HBase 分區(qū)機制會隨著數(shù)據(jù)量的遞增出現(xiàn)存儲效率降低的情況,其與本文提出的模型在性能衰減方面的差距逐漸變大,且在數(shù)據(jù)到達(dá)一定量級時失效。
本節(jié)的目標(biāo)是評價自動預(yù)分區(qū)模型的負(fù)載均衡性,針對試驗的19 臺存儲節(jié)點服務(wù)器,判斷數(shù)據(jù)是否能夠負(fù)載均衡地存儲在每個節(jié)點上。
表6 給出了某型號飛行器兩次飛行試驗數(shù)據(jù)進(jìn)行的負(fù)載均衡性存儲試驗結(jié)果。第一次試驗選取的是50 GB 的原始數(shù)據(jù)文件,由于數(shù)據(jù)中某些參數(shù)采樣率高,數(shù)據(jù)量過大,經(jīng)過預(yù)分區(qū)算法模型的計算,選擇了按時間戳進(jìn)行分區(qū)存儲,結(jié)果顯示解析之后的數(shù)據(jù)平均分配到了19 個存儲節(jié)點上,每個節(jié)點Region 的數(shù)量為11、12 個,每個節(jié)點存儲的數(shù)據(jù)量在40~42 GB。
Table 5 Result of data storage performance test表5 數(shù)據(jù)存儲性能試驗結(jié)果
Table 6 Load balance test results of model表6 模型的負(fù)載均衡試驗結(jié)果
第二次試驗選取的10 GB 的原始數(shù)據(jù)文件,該文件數(shù)據(jù)量不大,因此經(jīng)過預(yù)分區(qū)算法模型的計算,選擇了按參數(shù)進(jìn)行分區(qū),結(jié)果顯示解析之后的數(shù)據(jù)平均分配到了19 個存儲節(jié)點上,每個節(jié)點的Region 數(shù)量為16、17 個,每個節(jié)點的參數(shù)數(shù)量為533 個左右,每個Region 的參數(shù)數(shù)量為31 個。
可以看出,預(yù)分區(qū)策略可以對裝備數(shù)據(jù)進(jìn)行良好的負(fù)載均衡存儲,數(shù)據(jù)平均分配在每一個節(jié)點的每一個Region 里,這也有助于提高對海量裝備數(shù)據(jù)的檢索效率,提高對多維度數(shù)據(jù)的檢索分析性能。
本節(jié)的目標(biāo)是討論預(yù)分區(qū)策略在裝備領(lǐng)域的適用性并進(jìn)行試驗。多點參數(shù)、時序性、采樣率、采樣點數(shù)值,凡是滿足這些特征的裝備數(shù)據(jù)都可以使用本文討論的預(yù)分區(qū)策略。
Fig.9 Airplane test data storage圖9 飛機試驗數(shù)據(jù)存儲
Fig.10 Airplane engine test data storage圖10 航空發(fā)動機試驗數(shù)據(jù)存儲
Fig.11 Satellite test data storage圖11 衛(wèi)星試驗數(shù)據(jù)存儲
這里選擇四類裝備進(jìn)行數(shù)據(jù)試驗,四類裝備數(shù)據(jù)分別為某型號飛機試驗數(shù)據(jù)、某型號發(fā)動機氣路故障數(shù)據(jù)、某型號導(dǎo)航衛(wèi)星數(shù)據(jù)、某型號特種車輛行駛測試數(shù)據(jù),檢測模型的適用性。如圖9、圖10、圖11、圖12 所示,描述了針對四種不同裝備數(shù)據(jù)進(jìn)行模型適應(yīng)性評估的結(jié)果,由于數(shù)據(jù)有限,無法針對不同種類裝備數(shù)據(jù)進(jìn)行橫向比對,但是這里仍然可以根據(jù)多次試驗生成的結(jié)果進(jìn)行分析。
圖9 描述了某型號飛機的數(shù)據(jù)試驗,這里選取了燃油系統(tǒng)(FS)、APU 系統(tǒng)、動力裝置(DS)、防火系統(tǒng)(FPS)、電源系統(tǒng)(CS)五個分系統(tǒng)數(shù)據(jù),經(jīng)過格式化之后的數(shù)據(jù)由Hfile 經(jīng)過預(yù)分區(qū)模型進(jìn)行存儲的時間在7~9 min 之間,證明模型對該型號飛機數(shù)據(jù)進(jìn)行分布式快速存儲是有效的。
圖10 描述了航空發(fā)動機的數(shù)據(jù)試驗,這里選取的美國NASA 公布出來的發(fā)動機進(jìn)行飛行試驗時內(nèi)部高壓壓氣機(HPC)、低壓壓氣機(LPC)、高壓渦輪(HPT)、低壓渦輪(LPT)的試驗數(shù)據(jù)。在此基礎(chǔ)上進(jìn)行了故障仿真注入,得到其在一定時間段內(nèi)的故障數(shù)據(jù)。由于數(shù)據(jù)量有限,進(jìn)行預(yù)分區(qū)試驗在很短的時間內(nèi)完成,集中在12~17 s之間,證明模型對這類型號發(fā)動機故障數(shù)據(jù)進(jìn)行分布式快速存儲是有效的。
Fig.12 Special vehicle test data storage圖12 特種車輛試驗數(shù)據(jù)存儲
圖11 描述了進(jìn)行的某型號衛(wèi)星的數(shù)據(jù)試驗,這里選取了電源系統(tǒng)(PS)和熱控系統(tǒng)(TCS)兩個分系統(tǒng)的數(shù)據(jù)及性能試驗,由于該類型衛(wèi)星樣本數(shù)據(jù)積累時間較長,因此樣本數(shù)據(jù)量較多,其中電源系統(tǒng)數(shù)據(jù)存儲時間在12 min 左右,熱控系統(tǒng)數(shù)據(jù)存儲時間在18 min 左右,證明模型對這類型號衛(wèi)星數(shù)據(jù)進(jìn)行分布式快速存儲是有效的。
圖12 描述了進(jìn)行的某型號特種車輛的數(shù)據(jù)試驗,這里選取車輛5 個分系統(tǒng)的數(shù)據(jù),分別為中央充放氣系統(tǒng)(CCRG)、AMT 系統(tǒng)、制動系統(tǒng)(BA)、發(fā)動機(ES)、滅火控制盒(FECB)。由圖可知,幾個分系統(tǒng)數(shù)據(jù)可以進(jìn)行存儲,存儲時間集中在2~3 min 內(nèi),證明模型對具備該類型特點的裝備數(shù)據(jù)進(jìn)行分布式快速存儲是有效的。
上述試驗評價了裝備數(shù)據(jù)快速存儲優(yōu)化模型的有效性。試驗結(jié)果表明,該方法可以有效提高海量裝備數(shù)據(jù)在分布式存儲上的性能,并使數(shù)據(jù)在存儲過程中實現(xiàn)負(fù)載均衡。然而,本文工作仍存在以下幾點不足。
為降低問題的復(fù)雜度,本文假設(shè)硬件服務(wù)器的條件為當(dāng)前主要使用規(guī)格,現(xiàn)有服務(wù)器規(guī)格對HBase Region 的支持能力最多為10 GB,未來會進(jìn)一步研究針對更加先進(jìn)的高聚合高物理核的服務(wù)器對模型的影響。
文中研究的數(shù)據(jù)樣本大多是裝備飛行器在軌運行數(shù)據(jù)、飛行試驗數(shù)據(jù)以及地面試驗數(shù)據(jù),針對飛行器其他途徑產(chǎn)生的數(shù)據(jù)特點未做進(jìn)一步研究,如指令數(shù)據(jù)、指揮控制數(shù)據(jù)、語音圖像數(shù)據(jù)等。
近年來學(xué)者在大數(shù)據(jù)存儲優(yōu)化方面進(jìn)行了大量的研究,特別是針對大規(guī)模數(shù)據(jù)的分布式列存儲方面,文獻(xiàn)[19]提出了一種行列混合的存儲方法,該方法在通用的列式存儲的基礎(chǔ)上,為了提高查詢性能,將高頻訪問的列數(shù)據(jù)進(jìn)行組合。但是該方法對HDFS(Hadoop distributed file system)內(nèi)部進(jìn)行了重新設(shè)計,影響了分布式文件系統(tǒng)的通用性,并不適合所有裝備大數(shù)據(jù)的存儲場景。日本NEC 株式社云系統(tǒng)研究試驗室的Nishimura和加州大學(xué)巴巴拉分校的Das 等人提出了一種基于HBase 的可擴展的數(shù)據(jù)管理基礎(chǔ)架構(gòu)[20],該方法在鍵值存儲上加入了分層的多維索引結(jié)構(gòu),而在底層使用鍵值存儲保持系統(tǒng)高吞吐量和大數(shù)據(jù)量。雖然該方法在多維度查詢處理上具有良好的表現(xiàn),但是在16 個節(jié)點的試驗環(huán)境中只能實現(xiàn)每秒幾十萬的數(shù)據(jù)寫入,顯然不夠高效。本文中提出的策略更有助于海量數(shù)據(jù)的快速和負(fù)載均衡存儲,對于數(shù)據(jù)量極其龐大的裝備數(shù)據(jù)而言具有良好的數(shù)據(jù)存儲表現(xiàn)。
還有部分學(xué)者以提高數(shù)據(jù)檢索效率為目的進(jìn)行了數(shù)據(jù)存儲優(yōu)化研究,文獻(xiàn)[21-22]提出了一種構(gòu)建大數(shù)據(jù)索引的方式,利用多副本機制滿足不同海量數(shù)據(jù)查詢場景,這與本文中滿足不同查詢場景的目標(biāo)相同,但是在實際應(yīng)用中需要更大的系統(tǒng)開銷。加拿大阿爾伯塔大學(xué)的Vashishtha 等人[23]基于HBase開發(fā)了一個框架,可以實現(xiàn)復(fù)雜的聚合函數(shù),如行數(shù)、最大值、最小值等,但是其解決的根本問題在于數(shù)據(jù)存儲之后的查詢性能優(yōu)化,而本文更關(guān)注于數(shù)據(jù)的存儲性能優(yōu)化。文獻(xiàn)[24]同樣通過設(shè)計一種新的算法,使用戶可以最高效地查詢到最優(yōu)的列族,進(jìn)而提高HBase 的查詢性能。事實上,對于裝備數(shù)據(jù)而言,多列族并不適合其數(shù)據(jù)模型,單一列族可以得到更優(yōu)化的數(shù)據(jù)查詢性能。
數(shù)據(jù)壓縮技術(shù)也是大數(shù)據(jù)存儲優(yōu)化研究的方向,文獻(xiàn)[25]介紹了Snappy、bzip2 等數(shù)據(jù)壓縮技術(shù),通過壓縮技術(shù)實現(xiàn)大數(shù)據(jù)處理過程中中間數(shù)據(jù)的讀寫速度,從而提高海量數(shù)據(jù)的存儲問題,這與本文研究點有所不同,本文研究的數(shù)據(jù)處理過程是基于分布式內(nèi)存技術(shù),不存在中間數(shù)據(jù)寫入磁盤的問題,本文從數(shù)據(jù)最終寫入列式數(shù)據(jù)庫的優(yōu)化方面進(jìn)行研究。
本文的主要貢獻(xiàn)是提出了一種海量裝備數(shù)據(jù)的快速存儲方法,即基于HBase 自動化預(yù)分區(qū)策略的裝備數(shù)據(jù)存儲優(yōu)化方法,該方法通過對分布式數(shù)據(jù)庫HBase 和裝備數(shù)據(jù)特點進(jìn)行研究,解決海量裝備數(shù)據(jù)快速的、負(fù)載均衡的存儲問題。
該方法首先給出了裝備數(shù)據(jù)分布式存儲模型,并基于HBase 列式數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)快速的分布式存儲。在裝備數(shù)據(jù)分布式存儲模型的基礎(chǔ)上,研究了裝備數(shù)據(jù)自動化預(yù)分區(qū)策略的影響因子,從數(shù)據(jù)層面和集群配置信息層面進(jìn)行了關(guān)聯(lián)性分析。在影響因子確認(rèn)的基礎(chǔ)上,給出了針對不同數(shù)據(jù)場景的自動化預(yù)分區(qū)算法模型。最后,通過在數(shù)據(jù)預(yù)處理層和數(shù)據(jù)存儲層之間搭建數(shù)據(jù)快速處理中間件,完成優(yōu)化模型的實現(xiàn)。該方法選取了某型號飛行器多次試驗任務(wù)的數(shù)據(jù)對模型進(jìn)行了驗證,對其基于Hbase系統(tǒng)的實現(xiàn)在存儲性能、負(fù)載均衡等方面的指標(biāo)進(jìn)行了評價。