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