李傳志
(吉林工業(yè)經(jīng)濟(jì)學(xué)校,吉林 吉林132000)
快速存取記錄器(QAR)是一種機(jī)載飛行數(shù)據(jù)記錄儀,相比以往較為常見的黑匣子,前者更具時(shí)序性,并且擁有容量大、參數(shù)多等優(yōu)勢[1]。但由于QAR 數(shù)據(jù)數(shù)量較多,傳統(tǒng)關(guān)系數(shù)據(jù)庫難以高效完成數(shù)據(jù)存取,所以急需一款新型QAR 數(shù)據(jù)儲(chǔ)存系統(tǒng),實(shí)現(xiàn)QAR 數(shù)據(jù)的快速存取。本文以HBase 技術(shù)為基礎(chǔ),構(gòu)建一種QAR 數(shù)據(jù)儲(chǔ)存系統(tǒng)。
通過與專業(yè)人士探討分析,結(jié)合航空公司關(guān)注問題,本文將QAR 數(shù)據(jù)分為安全分析、航跡描繪、節(jié)省燃油、發(fā)動(dòng)機(jī)狀況、預(yù)測、飛行員操作分析及其他等七個(gè)主題。安全分析主題主要參數(shù)包含無線電高度、高度、風(fēng)向、航向、偏流角、攻角、地速、V1速度、V2 速度、Vr 速度、Vref 速度、左右油門反推位、左反推伸出、左反推轉(zhuǎn)換、打開A/T、A/T 脫開、APU 啟動(dòng)和A/P 關(guān)斷;航跡描繪主題主要參數(shù)包含經(jīng)度、緯度、高度、航向和偏流角;節(jié)省燃油主題主要參數(shù)包含地速、空速、發(fā)轉(zhuǎn)速、左發(fā)轉(zhuǎn)速、N1、N2、馬赫、飛機(jī)重量、左右主油箱燃油流量、擾流板位置、選擇高度、選擇垂直速度、選擇馬赫速度、選擇空速和大氣靜壓;發(fā)動(dòng)機(jī)狀況主題主要參數(shù)包含高度、高低壓轉(zhuǎn)子轉(zhuǎn)數(shù)、馬赫數(shù)、油門桿角度和風(fēng)扇進(jìn)口溫度;預(yù)測主題主要參數(shù)包含傾斜角度、俯仰角度、滑油壓力、EGT 溫度、左右油箱燃油流量、VOR 頻率、TCAS狀態(tài)、垂直加速度等;飛行員操作分析主題主要參數(shù)包含下降率、偏航角、襟翼度數(shù)、著陸速度和速度變化率;其他主題包含未納入以上主題的參數(shù)。
本文設(shè)計(jì)QAR 數(shù)據(jù)儲(chǔ)存系統(tǒng)主要涉及HBase 表結(jié)構(gòu)設(shè)計(jì)、Value 表行鍵設(shè)計(jì)和預(yù)分區(qū)設(shè)計(jì)三方面內(nèi)容。
HBase 表結(jié)構(gòu)設(shè)計(jì):通常情況下,每個(gè)QAR 文件在完成譯碼后均由航班信息、參數(shù)信息和參數(shù)值三部分內(nèi)容組成,據(jù)此本文將QAR 數(shù)據(jù)分為航班元信息、參數(shù)元信息和參數(shù)值三大類。通過QAR 數(shù)據(jù)類別和超限事件進(jìn)行需求分析,本文分別設(shè)計(jì)出航班元信息表(FI)、參數(shù)元信息表(PI)、航班參數(shù)索引表(I)和數(shù)據(jù)值表(V)四個(gè)表。FI 表行鍵由航班號(hào)和航班日期組成,列簇為F_CF,共包括起飛落地時(shí)間、起飛落地機(jī)場、機(jī)尾號(hào)、航空公司及航班序列號(hào)等七列。PI 表行鍵由參數(shù)名稱組成,列簇為P_CF,共包括參數(shù)簡稱、單位、主題及參數(shù)序列號(hào)等四列。I 表行鍵由航班號(hào)、航班日期和參數(shù)名稱組成,列簇為I_CF1和I_CF2,I_CF1 包括航班參數(shù)編號(hào)一列,I_CF2 包括航班參數(shù)對應(yīng)MD5 值一列。V 表行鍵由航班號(hào)、航班日期、參數(shù)名稱、參數(shù)主題及參數(shù)取值對應(yīng)時(shí)間組成,列簇為V_CF,共包括00~59秒數(shù)據(jù)值六十個(gè)參數(shù)[2]。
Value 表行鍵設(shè)計(jì):本文設(shè)計(jì)V 表行鍵主要由五個(gè)部分組成,為能盡量縮短行鍵長度,以減少儲(chǔ)存空間占用,本文利用MD5 散列對V 表行鍵進(jìn)行改進(jìn),行鍵前4 個(gè)字節(jié)設(shè)置為航班號(hào)、航班日期及參數(shù)主題,行鍵中間8 個(gè)字節(jié)分別設(shè)置為航班序列號(hào)和參數(shù)序列號(hào),行鍵后4 個(gè)字節(jié)設(shè)置為參數(shù)取值對應(yīng)時(shí)間,包括小時(shí)位與分鐘位。
由于FI 表、PI 表和I 表三者儲(chǔ)存原理大致相同,因此本文僅對FI 表儲(chǔ)存原理過程進(jìn)行描述。QAR 數(shù)據(jù)在完成譯碼處理后,其路徑會(huì)被記錄在本文文件中,需要使用QAR 文件時(shí),僅需讀取存儲(chǔ)路徑信息的文本文件,即可打開QAR 文件,隨后對QAR 文件表頭第一、二行內(nèi)容進(jìn)行解析,即可將FI 表中的航班元信息全部讀取出來,其中航班號(hào)由航班公司二位代碼和航班序列號(hào)組成,航班日期則按照yyyymmdd 格式進(jìn)行提取,機(jī)尾號(hào)由字母B 和阿拉伯?dāng)?shù)字組成,機(jī)場四字碼代表起飛落地機(jī)場,起飛落地時(shí)間選用12 小時(shí)制來表示,根據(jù)AM和PM區(qū)分上下午。對QAR 文件存儲(chǔ)路徑進(jìn)行讀取時(shí),會(huì)對此路徑位置進(jìn)行記錄,并生成4 字節(jié)數(shù)字序列號(hào),并將其賦值于航班序列號(hào)。隨后再將QAR 文件表頭和FI 表相關(guān)數(shù)據(jù)以put(List
圖1 FI 表數(shù)據(jù)儲(chǔ)存流程示意圖
對于數(shù)據(jù)查詢,將航班號(hào)、參數(shù)名稱、起始查詢時(shí)間和終止查詢時(shí)間分別設(shè)定為f、p、t1和t2,在進(jìn)行飛行品質(zhì)監(jiān)控分析過程中,查詢條件則可表示為q(f,p,t1,t2)。比如在2020 年1 月1日航班號(hào)為AB2259 的航班,k 時(shí)間在10:20 至10:22 的地速ground speed 取值查詢可表示為q(“AB225920200101”,“ground speed”,“1020”,“1022”),經(jīng)行鍵過濾器得到I 表對應(yīng)列值和MD5 值,隨后再將兩列值組合獲得V 表行鍵高12 字節(jié),接著將查詢到的參數(shù)時(shí)間范圍添加到V 表行鍵低4 字節(jié)中,進(jìn)而獲得查詢V 表行鍵范圍,通過設(shè)置二級過濾器,對V 表進(jìn)行過濾,最后對掃描對象進(jìn)行創(chuàng)建,再將二級過濾器添加至掃描器對象,進(jìn)而獲得查詢結(jié)果。
抽取2020 年上半年某航空公司200 個(gè)航段QAR 數(shù)據(jù)文件作為實(shí)驗(yàn)數(shù)據(jù),實(shí)驗(yàn)集群包括一個(gè)主節(jié)點(diǎn)和兩個(gè)虛擬節(jié)點(diǎn),集群整體搭建服務(wù)器內(nèi)存為32G,磁盤儲(chǔ)存空間為3T,服務(wù)器型號(hào)為PowerEdge R740。單節(jié)點(diǎn)各分磁盤空間50GB、內(nèi)存1GB,選用單核CPU,Hadoop 集群選用Hadoop2.7.6、Zookeeper3.4.13及HBase2.6.5,分區(qū)b 設(shè)置為27,集群HDFS 復(fù)制因子設(shè)置為2。
于QAR 文件數(shù)量遞增條件下進(jìn)行QAR 數(shù)據(jù)儲(chǔ)存分布效果實(shí)驗(yàn),設(shè)置5 組測試,QAR 文件個(gè)數(shù)分別使用30、90、120、160和200 個(gè)。實(shí)驗(yàn)結(jié)果顯示,各個(gè)數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)增長趨勢大致相同,同時(shí)利用MD5 散列改進(jìn)的V 表,可提高數(shù)據(jù)分布的離散性,進(jìn)而避免數(shù)據(jù)寫入時(shí)發(fā)生熱點(diǎn)問題,此外,通過劃分出27 個(gè)分區(qū),也保證了各分區(qū)數(shù)據(jù)數(shù)量相對平衡,進(jìn)而有效避免數(shù)據(jù)傾斜的發(fā)生。
通過對實(shí)際飛行品質(zhì)進(jìn)行需求分析,本文共設(shè)置3 種查詢場景完成QAR 數(shù)據(jù)查詢實(shí)驗(yàn)。實(shí)驗(yàn)一是對指定航班指定參數(shù)5分鐘內(nèi)300 個(gè)參數(shù)進(jìn)行查詢,實(shí)驗(yàn)二是對指定航班指定主題下5 個(gè)不同參數(shù)1 分鐘內(nèi)60 個(gè)連續(xù)數(shù)據(jù)進(jìn)行查詢,實(shí)驗(yàn)三是對指定航班5 個(gè)不同主題下指定參數(shù)1 分鐘內(nèi)60 個(gè)連續(xù)數(shù)據(jù)進(jìn)行查詢,每個(gè)實(shí)驗(yàn)均進(jìn)行20 次。實(shí)驗(yàn)結(jié)果顯示,實(shí)驗(yàn)一、實(shí)驗(yàn)二及實(shí)驗(yàn)三進(jìn)行20 次查詢的平均耗時(shí)分別為299.63ms、1786.40ms及1909.75ms,表明本文設(shè)計(jì)儲(chǔ)存系統(tǒng)更適合對指定參數(shù)一段時(shí)間內(nèi)連續(xù)取值序列進(jìn)行查詢。
本文設(shè)計(jì)基于HBase 技術(shù)的QAR 數(shù)據(jù)儲(chǔ)存系統(tǒng)可將QAR數(shù)據(jù)相對均勻的儲(chǔ)存在HBase 集群當(dāng)中,降低資源消耗,在數(shù)據(jù)查詢方面也可實(shí)現(xiàn)快速查詢,特別是在QAR 參數(shù)取值序列場景中查詢效率極高。