馮興杰 劉 芳
1.中國民航大學計算機科學與技術學院,天津 300300 2.中國民航大學信息網絡中心,天津 300300
基于Hadoop的ADS-B數據解析與存儲方法*
馮興杰1,2劉 芳1
1.中國民航大學計算機科學與技術學院,天津 300300 2.中國民航大學信息網絡中心,天津 300300
廣播式自動相關監視系統(Automatic Dependent Surveillance-Broadcast,ADS-B)是國際民航組織(ICAO)推薦使用的集數據通信、衛星導航和監視技術于一體的新一代航空器運行監視系統,可以自動的接收和發送飛機及其周圍的信息。隨著監視區域內航班數量的增加,對于以秒為單位進行收發信息的ADS-B而言,單機環境已經無法滿足海量ADS-B數據的解析、存儲與分析,本文利用Mapreduce模型提供的高效分布式編程和運行框架對ADS-B數據進行解析,將解析后的數據存儲到基于Hive的ADS-B數據倉庫,并通過Mysql建立的索引表聯合Hive中的分桶操作對信息種類進行劃分,有效提高了數據解析效率并避免了Hive中索引不完善引起的查詢效率低的問題。實驗表明對于海量的ADS-B數據,利用Mapreduce進行解析并利用Hive進行存儲分析的效率明顯提升。
ADS-B;Hadoop;Mapreduce;Hive;解析;存儲;分桶
ADS-B是基于GPS定位和地/空數據鏈通信的航空器運行監視系統,是國際民航組織(ICAO)推薦使用的集數據通信、衛星導航和監視技術于一體的新一代航行系統的重要組成部分[1]。ADS-B技術通過給飛行員提供更多的飛機及其周邊環境信息,提升了空中交通安全的可靠性和準確性。相對于雷達技術來說具有數據更新速率快、數據精度高、全天候運行和成本低等特點。MH370等一系列航班失事事件加速了全球民航界對飛機飛行定位系統和航線追蹤技術的研究。美國 FlightAware公司和 Aireon公司已經開始合作研發GlobalBeacon系統,擬通過銥星提供星基 ADS-B 服務,計劃 2018 年投入運營,并將在 2021 年實現 1 分鐘間隔飛行追蹤的要求[2]。
近年來,中國民用航空運輸業務迅速發展,2015年統計的全國起降架次達到1040萬架,并且仍以16%的速度持續增長。為了在快速增長的同時有效保證空中交通安全,國家正有計劃地加快ADS-B等新技術的部署。通過ADS-B接收并存儲的海量數據不僅可以分析航跡信息,還可以更加準確地預測飛機預計到達時間,提高飛機正點率。
目前,針對ADS-B技術的研究主要集中在硬件系統的實現、單機環境下解析以及航跡安全間隔分析等方面。例如,文獻[3]對ADS-B數據的解碼以及其他數據的融合。文獻[4]實現了ADS-B關鍵應用軟件系統。文獻[5]提出運用危險碰撞模型評估航路安全間隔,并將其運用在ADS-B航跡數據上。文獻[6-7]分別研究了基于ADS-B數據和GPS數據融合,并驗證了其航跡信息的準確性。文獻[8]提出了基于JSON格式實現ADS-B數據的分類管理。以上文獻對ADS-B數據的處理以及存儲都是在單機環境下進行的。但是,面對越來越大的數據量,普通的存儲和分析平臺已經無法滿足需求,需要將數據解析和存儲移植到分布式計算環境下。文獻[9]將按CAT033協議解析出來的ADS-B數據直接存儲在Hive中,利用GIS工具對其航跡信息進行分析。但是沒有對數據進行數據倉庫的構建,不利于后續數據的擴展。
分布式計算環境是將數據的存儲、分析和計算等建立在網絡之上由多個服務器構成的集群?;贖adoop的Mapreduce分布式框架是典型的分布式計算環境,將ADS-B海量數據的解析放入Mapreduce框架中,能夠提高處理數據的速率。同時,利用Hive數據倉庫存儲ADS-B數據能較好地滿足航空公司分析數據的需求。與傳統的XML,JOSN或者數據庫等存儲格式相比具有更高的擴展性。
本文提出基于Hadoop的ADS-B數據解析與存儲方法,其基本思路是:首先研究1090兆赫擴展電文(1090MHz ES)ADS-B的數據格式和解碼方法,然后實現基于Mapreduce框架數據解析算法,并將處理后的數據導入基于Hive的ADS-B數據倉庫。
2.1 ADS-B系統
現行的ADS-B系統一般采用3種典型的數據鏈架構,分別是UAT數據鏈、VDL-4數據鏈和Mode S數據鏈。本文主要圍繞中國民航大學自行開發的ADS-B系統開展研究,該系統基于Mode S模式應答機技術(1090 MHz Extended Squitter) ,采用脈沖位置編碼在下行頻率為1090MHz的數據鏈上進行數據傳輸。被傳輸的每一個脈沖被分為2部分:前半部分都為1,其余的都是0。由于ADS-B系統采用固定長度報文進行傳輸,描述一個飛機的完整信息需要連續解析、綜合多個報文才能得到。另外,根據描述飛機不同的狀態特征(如:位置、速度及飛機標識等),消息更新的頻率也不同。例如,關于位置和速度的消息每0.4~0.6s廣播一次,關于飛機標識的信息每4.8~5.2s廣播一次,關于意向改變消息每1.6~1.8s廣播一次[10]。對于接收到的多條ADS-B報文,需要根據1090ES編碼標準綜合為一條完整的飛機描述信息。圖1為ADS-B消息的傳輸波型圖。

圖1 ADS-B消息傳輸波形
2.2 ADS-B報文數據結構
ADS-B報文長度為112比特,采用16進制編碼。根據RCTA[10]標準, ADS-B 報文的基本結構為: Bit 1-5為下行鏈路格式域(DF),DF在取不同值時有不同的含義。 DF=17格式表示S模式應答機發射的ADS-B消息;DF=18格式表示用于非S模式應答機發射的ADS-B消息或者TIS-B消息;DF=19格式預留為軍事應用[11]。Bit 6-8為CA域,表示S模式應答機能力;Bit9-32為AA域,表示應答機24比特ICAO地址; Bit 33-88為ADS-B消息域ME,承載飛行器報告的重要狀態信息,其中前 5個比特為消息類型字段,隨后的3個比特為消息子類型,剩余的48個比特為飛行器狀態信息;最后的24比特為校驗域 PI[11]。圖2為ADS-B消息格式結構。

圖2 ADS-B消息格式結構
2.3 ME字段的解析
飛行器狀態信息位于ADS-B報文的33-88位的ME字段中,根據消息類型字段的不同,此字段中可能包含空中位置消息、地表位置消息、飛機ID與類型消息、空中速度消息、航線改變消息以及飛機運行狀況消息等。參考RCAT[10]標準,對接收到的ADS-B原始編碼報文進行解析,得到飛機實時的位置以及周邊信息。在解析過程中,需要根據接收報文的消息種類字段,運用相對應的算法進行解析,核心的算法有用于解析航班號的IA5算法、用于解析經緯度的CPR算法[12-13]、用于解析高度和速度的格雷算法。其中CPR算法又分為全球解碼和本地解碼,具體情況要根據接收到消息的奇偶性進行判斷。具體報文解析算法流程圖如圖3。

圖3 ADS-B報文信息解析
3.1 Hadoop
Hadoop是一個分布式處理大數據的軟件平臺,提供了一種分布式并行編程的框架,它包含Mapreduce和HDFS(Hadoop Distributed File System)這2個核心模塊,其中Mapreduce是一種分布式編程模式,將普通的編程模式用Mapreduce框架進行分布式運算處理,而HDFS是一種分布式的文件系統,為整個系統提供底層的存儲支持。在這2個核心框架之上有一系列的分布式處理軟件,例如Hive,Hbase,Pig等??傮w來說,就是在Hadoop的分布式框架上采用Mapreduce的運算模式在大規模集群中處理海量數據,并將處理后的數據存儲在HDFS上[14]。
3.2 Mapreduce
Mapreduce 主要支持基于集群的海量數據分布式計算,是在龐大數據集上執行高度并行化和分布式算法的框架[15]。其執行過程為:Mapreduce框架將輸入的數據分成大小相同的數據塊,通過map接收并形成
3.3 Hive
Hive中包含的組件有CLI(command line interface),JDBC/ODBC,Thrift Server,WEB GUI,MetaStore和Driver(Complier,Optimizer和Executor)。它建立在Hadoop上,是基于Hadoop一個數據倉庫工具,能將結構化的文件映射為一張數據庫表,并提供完好的sql查詢性能,能對存儲在Hadoop中的大規模歷史數據進行批量處理操作。Hive將簡單定義的sql語句稱為hql,將hql語句轉化成Mapreduce任務來提高查詢速率。它沒有具體定義數據的格式,用戶可以靈活地自定義類型格式,并且能夠存儲struct,map和array結構的數據。
但是Hive中的索引優化還不完善,在查詢海量數據時,在索引表中找到需要查詢的記錄,獲取到該記錄在HDFS中的文件名以及偏移量,用一個map 任務進行查詢,理論上減少了掃描全表的時間,但是每次查詢都會用一個job掃描索引表。假設索引表的列值非常稀疏,那么索引表自身也會十分大,這樣反而增加了查詢負擔。文獻[16]中將數據劃分主題,構建數據倉庫,利用Mysql索引表存儲主題編號,在Hive中按照Mysql中的主題編號對主題進行分桶,根據主題序號只需要查找一個桶的數據,從而提高了查詢速率。但是本文是直接解析的海量ADS-B數據,對解析出來的數據進行融合分析,直接利用Hive中的分區分桶操作。
4.1 數據倉庫的總體架構
基于Hive的ADS-B數據倉庫的設計最終目標是為了更高效地分析數據,為了更好的劃分ADS-B數據信息的主題,以便為民航安全提供更好的輔助決策,提高航空公司的效益,所以系統架構主要由5層構成:數據源、數據解析、數據存儲、數據分析及應用層, 如圖4所示。其中,數據源層的數據是通過ADS-B接收機接收到的真實數據,原始數據以28位十六進制編碼的格式存儲在TXT文件中,在傳遞過程中可能會出現缺失、錯位等情況。

圖4 數據倉庫的架構
數據解析層主要在分布式文件系統下,根據標準結合Mapreduce框架對搜集到的海量數據進行解析,通過Map將每一條數據的ICAO地址作為key,將其余信息作為value進行并行處理,同時在value值中根據標準將數據進行解析。將Map處理的數據進行Reduce計算,將相同的ICAO鍵放在一起,對應相應的value值。
數據存儲層是將解析后的數據通過Hive數據倉庫進行存儲、分類和提取,結合Mysql將數據按消息種類存儲,即能存儲海量數據,又能提高查詢速率,方便以后對數據的擴展以及分析。
數據分析和前端應用層是利用聚類分析、頻繁挖掘和機器學習等方法對Hive中的數據進行處理,更好地分析其航跡安全,航跡間隔,提高經濟效益[17-19]。為實現真正的“自由飛行”提供良好的決策作用。
4.2 基于Mapreduce的ADS-B數據解析
文獻[3-4]是基于單機環境下設計實時ADS-B數據解析系統,對于海量歷史數據的分析以及存儲沒有提及。本文改進了單機環境下的基于Mapreduce的解析算法,有效處理海量ADS-B歷史數據,對以后在分布式平臺下的數據挖掘提供基礎。
Mapreduce的運行機制可以分為4部分:slipt,map,shuffle和reduce。在map處理完成后由shuffle將相同key值的value整合成一個list,交給reduce計算。由于ADS-B數據的收發都是以毫秒進行的,但是本文中接收機接收到數據的時間只顯示到秒,所以在每秒都會有若干不同或者重復的數據出現。因此,本文將ICAO地址作為key值,時間以及其他信息作為value值傳入map,在reduce階段對shuffle中同一架飛機的list列表進行數據預處理。預處理階段包括去除重復的數值,填充缺失值,對飛機高度、速度及方向等有明顯錯誤的數據進行清洗。具體過程如圖5。

圖5 Mapreduce處理
4.3 數據存儲策略
由于解析的歷史ADS-B數據是不同航班不同時刻不同消息類型的混合數據,為了今后對數據的挖掘處理,需要將數據進行融合,整合成每個時間點對應的一條完整的航跡信息。所以本文將數據按照消息種類的不同劃分為不同的主題,在Mysql中實現主題序號的存儲,與Hive中的ADS-B數據倉庫構成星型結構[20]。主題表的劃分如圖6所示。在Hive中使用Mysql替代分區功能定位到數據所在的位置,根據主題編號將數據分成多個桶。在查詢數據時針對其中一個桶進行操作,這樣的存儲結構不僅提升對海量數據的查詢速率,在對航跡信息進行分析時可以隨時查詢一個航班不同日期的航跡,還可以查詢同一個時間段內不同航班的航跡。
其中,ICAO代表飛機標識的唯一地址,Time是接受數據的時間,ADS-B數據每秒廣播的消息是關于速度、位置、高度、飛機航班號等中的任何一條,但是每條消息中都會廣播ICAO地址,所以在Mysql中建立時間、ICAO和各種消息類型的編碼,將每條信息的具體消息存放于Hive數據倉庫中,根據消息編號查找其中一個桶中的信息,提高Hive中的查詢速率,避免Hive數據倉庫中索引不完善的缺陷。建立的基于Hive的數據倉庫不僅有利于以后對更多消息的擴充,還可以高效地查詢一個航班某個時間的各種信息,節約空間和時間,為之后對航跡安全和航空公司經濟效益的分析提供決策。

圖6 Hive數據倉庫構建
5.1 實驗環境與數據
實驗使用的數據是中國民航大學的ADS-B接收機接收的真實數據,共 10G。實驗環境由9臺電腦組成的,Hadoop集群搭建在32位Ubuntu14.04操作系統上。主節點配置為i7-3770處理器,4G內存,1T硬盤。從節點配置使用的是e2140處理器,1G內存,250G硬盤,集群版本Hadoop2.4.0 。
5.2 實驗結果與分析
挖掘分析歷史ADS-B數據就要解析接收到的
海量原始數據,所以第1項測試的目的是對比單機環境下解析海量ADS-B歷史數據與Hadoop集群環境下通過Mapreduce解析數據的耗時量,實驗結果如圖7所示。

圖7 解析對比耗時
從對比實驗中可以看出單機情況下,隨著數據量越大耗時越長;相反,集群中數據量增多的情況下耗時比率緩和增長,對于分析海量ADS-B歷史數據來說,集群通過分布式并行解析ADS-B數據具有明顯的優勢。
第2項測試是對比將解析后的不同大小的數據量分別導入Mysql和Hive中后查詢某個航班每天每個時間航跡和同一天每個時刻所有航班航跡信息的速率。結果如圖8和9所示。

圖8 查詢某個航班耗時對比

圖9 查詢某天航跡耗時對比
通過對比可以看出,對于查詢信息,小數據量的查詢在Mysql中的速率大于Hive,但是數據量一旦增加,Mysql中的查詢耗時明顯增加;相反,在Hive中查詢耗時緩慢的增加。
對于查詢航班航跡信息來說,同一天所有航班的航跡信息有助于分析超限事件,同一航班不同天的航跡有助于分析軌跡異常檢測。
第3項實驗是對780cc0航班一周的航跡信息和2016/07/13日所有航班航跡信息的顯示,該實驗使用GIS Tools for Hadoop工具,通過自定義UDF將其運用在自己的ADS-B數據中,并使用MapInfo在地圖中顯示出來,如圖10和11所示(圖中不同線條代表不同的日期或者不同的航班。)。

圖10 780cc0航跡

圖11 2016/07/13航跡顯示
通過ADS-B傳遞出的海量航跡信息可以更加精確地分析航跡安全問題和航跡異常行為檢測。
目前文獻中,針對ADS-B數據的處理都是單機實現解析,并且沒有存儲在Hive數據倉庫中。基于Hive的ADS-B數據倉庫的建立可以更方便對數據進行挖掘分析,結果也更精確,同時Hive數據倉庫有較好的擴展性,隨著ADS-B的不斷發展,其在Hive中存儲也將不斷的完善。
對于航空公司來說,隨著民航的不斷發展,機場的不斷擴建,飛機的數量也在劇烈增加,解析并且存儲海量的歷史數據對分析航跡信息,促進經濟效益,提高飛行安全十分必要。國內ADS-B系統在不斷完善,針對現有ADS-B海量歷史數據解析和存儲方面的問題,本文設計了針對ADS-B數據基于Mapreduce并行的解析,提高了海量ADS-B歷史數據的解析速率,通過構建Hive倉庫進行存儲,為以后的數據挖掘與分析提供更好的平臺。下一步將在Hadoop中利用數據挖掘算法或者機器學習方法對Hive中的數據進行航跡安全間隔分析或者對多維軌跡異常進行檢測分析。
[1] 熊輝. 基于 C/S 架構的 ADS-B 區域數據中心系統設計[J]. 科技創新與生產力, 2016,(3):59-61.(Xiong Hui. ADS-B Regional Data Center System Design Based on C/S Architecture [J]. Science and Technology Innovation and Productivity, 2016(3):59-61.)
[2] 王元元.值得關注的商用航空技術[N]. 中國航空報, 2017.1.19.(Wang Yuanyuan. Noteworthy Commercial Aviation Technology [N]. China Aviation News, 2017.1.19 (007).)
[3] 王琦. 基于ADS-B的飛行航跡獲取研究與實現[D]. 吉林大學, 2015.(Wang Qi. Research and Implementation of Flight Path Acquisition Based on ADS-B [D]. Jilin University, 2015.)
[4] 宋偉. 基于ADS-B數據的航跡處理子系統設計與實現[D]. 電子科技大學, 2012.(Song Wei. Design and Implementation of Data Based Track Processing Subsystem [D]. University of Electronic Science and Technology of China, 2012.)
[5] 王紅勇,王晨,趙嶷飛. 基于ADS-B統計數據的航路安全間隔研究[J]. 中國安全科學學報,2013,(2):103-108.(Wang Hongyong, Wang Chen, Zhao Yifei. Research on Air Route Safety Separation Based on ADS-B Statistical Data [J]. China Safety Science Journal, 2013, (2): 103-108.)
[6] Christoph Reck, Max S Reuther, Alexander Jasch. Verification of ADS-B Positioning by Direction of Arrival Estimation[J]. International Journal of Microwave and Wireless Technologies, 2012,4(2):181-186.
[7] Busyairah Syd Ali1,Wolfgang Schuster,Washington Ochieng. Analysis of Anomalies in ADS-B and Its GPS Data[J]. GPS Solut, 2016(20):429-438.
[8] 姜建,王澤渟,高偉成. 基于JSON的ADS-B數據管理策略研究[J]. 信息與電腦,2016,(3):40-41.(Jiang Jian, Wang Zeting, Gao Weicheng. Research on ADS-B Data Management Strategy Based on JSON [J]. China Computer & Communication, 2016, (3): 40-41.)
[9] E Boci,S Thistlethwaite. A Novel Big Data Architecture in Support of ADS-B Data AnalyticC[C].Integrated Communications Navigation and Surveillance Conference (ICNS),Herdon,VA,USA,2015.
[10] RTCA DO-260B.Minimum Operational Performance Standards for 1090MHZ Automatic Dependent Surveillance-Broadcast(ADS-B)[S].2003.
[11] 胡俊. 1090ES ADS-B接收機嵌入式軟件設計[D].電子科技大學,2010.(Hu Jun. Embedded Software Design of 1090ES ADS-B Receiver [D]. University of Electronic Science and Technology of China, 2010.)
[12] 許亮. 1090ES廣播式自動相關監視系統的報文接收與解析[D].吉林大學,2015.(Xu Liang. 1090ES Automatic Dependant Surveillance-Broadcast System′s Message Receiving and Parsing[D]. Jilin University, 2015.)
[13] 丁維昊. 1090ES ADS-B系統中CPR算法與實現[J]. 指揮信息系統與技術,2016(2):57-62.(Ding Weihao. Compact Position Report(CPR) Algorithm and Its Realizatoin in 1090ES ADS-B System [J]. Command Information System and Technology, 2016(2): 57-62.)
[14] 劉云飛. 基于Hadoop的數據遷移與存儲的研究[D]. 北京郵電大學, 2015. (Liu Yunfei. Researsh of Data Migration and Storage Based on Hhdoop[D]. Beijing University of Posts and Telecommunications, 2015.)
[15] 熊倩,張郭明,徐婕. Mapreduce Shffule性能改進[J]. 計算機應用,2017,(S1):1-11. (Xiong Qian, Zhang Guoming, Xu Jie. Improvement of Mapreduce Shffule Performance[J]. Journal of Computer Applications, 2017, (S1): 1-11.)
[16] 馮興杰,吳稀鈺,趙杰.QAR數據倉庫在Hive中的構建[J].計算機工程與應用,2017,53(11):90-94. (Feng Xingjie, Wu Xiyu, Zhao Jie. QAR Data Warehouse Room Construction [J] Computer Engineering and Applications, 2017,53(11):90-94.)
[17] 毛嘉莉,金澈清,章志剛. 軌跡大數據異常檢測:研究進展及系統框架[J]. 軟件學報,2017,28(1):17-34. (Mao Jiali, Jing Cheqing, Zhang Zhigang. Anomaly Detection for Trajectory Big Data: Advancements and Framework [J]. Software, 2017, 28(1): 17-34.)[18] 潘新龍,王海鵬,何友,等. 基于多維航跡特征的異常行為檢測方法[J]. 航空學報,2017,38(4):254-263.(Pan Xinlong, Wang Haipeng, He You, et al. Abnormal Behavior Detection Method Based on Multidimensional Trajectory Characteristics [J] .Acta Aeronautica Et Astronautica Sinica, 2017,38(4):254-263.)
[19] 王全躍,朱海濤,馬瑞霞. 基于數據挖掘的ADS-B航跡數據偏差分析方法研究[J]. 科技創新與應用,2014,(13):35-36. (Wang Quanyue, Zhu Haitao, Ma Ruixia. Studies ADS-B Track Data Variance Analysis Based on Data Mining Method [J].Innovation Technology and Application, 2014, (13): 35-36.)
[20] 郇秀霞,王紅. 基于數據倉庫的QAR數據分析[J]. 計算機工程與設計,2008,(10):2685-2688. (Huan Xiuxia, Wang Hong. QAR Data Analysis Based on Data Warehouse [J]. Computer Engineering and Design, 2008, (10): 2685-2688.)
TheDataAnalysisandStorageofADS-BBasedonHadoop
Feng Xingjie1,2, Liu Fang1
1.College of Computer Science & Technology, Civil Aviation University of China, Tianjin 300300, China 2. Information Network Center, Civil Aviation University of China, Tianjin 300300, China
Automaticdependentsurveillance-broadcas(ADS-B)isanewgenerationofaircraftoperationmonitoringsystemthatintegratesdatacommunications,satellitenavigationwithsurveillancetechnologyrecommendedbytheinterbationalcivilaviationorganization(ICAO)canreceiveandsendtheinformationoftheaircraftandit’ssurroundingautomatically.Withtheincreasingnumberofflightswithinthesurveillancearea,fortheADS-Binsecondstosendandreceiveinformation,thestand-aloneenvironmenthasbeenunabletomeetthemassiveADS-Bdataanalysis,storageandanalysis.Inthispaper,theADS-BdataisparsedbyusingtheefficientdistributedprogrammingandruntimeframeworkprovidedbytheMapreducemodel.TheparseddataisstoredintheADS-BdatawarehousebasedonindextablecreatedbyMysqlcombinedwiththebucketinHiveoperationtoclassifythemessage,whicheffectivelyimprovestheefficiencyofdataanalysisandavoidstheproblemthatthequeryefficiencycausedbyimperfectindexinHiveislow.
*國家自然科學基金委員會與中國民用航空局聯合基金項目(U1233113)
RegardingthemassiveandhistoricaldataofADS-B,itisproventhattheparsingbymap-reduceframeandefficiencyofstorageanalysisbyHiveispromotedobviously.
ADS-B; Hadoop; Mapreduce; Hive;Parsing;Storage;BucketADS-B

V19
A
1006-3242(2017)05-0080-07
2017-05-24
馮興杰(1969-),男,天津人,博士,教授,主要研究方向為云計算、數據倉庫和智能信息處理;劉芳(1992-),女,山西人,碩士研究生,主要研究方向為云計算、智能信息處理。