劉應(yīng)剛 顧超 侯光華 羅偉
摘? 要:當(dāng)前導(dǎo)航監(jiān)測站(簡稱監(jiān)測站)的監(jiān)測任務(wù)日益繁重,接收和存儲的各類數(shù)據(jù)隨之增多,如何有效地管理這些監(jiān)測數(shù)據(jù),為提高系統(tǒng)的定位精度和穩(wěn)定性提供數(shù)據(jù)支持,成為急需解決的問題。針對這一問題,利用當(dāng)前成熟的大數(shù)據(jù)技術(shù)開發(fā)數(shù)據(jù)存儲管理系統(tǒng),改變了使用光盤管理數(shù)據(jù)的落后方式,解決了海量觀測數(shù)據(jù)存儲管理的難題,提升了監(jiān)測站的運維管理質(zhì)量和效率,為提升衛(wèi)星導(dǎo)航系統(tǒng)服務(wù)性能提供可靠支撐。
關(guān)鍵詞:觀測數(shù)據(jù)? 監(jiān)測站? 衛(wèi)星導(dǎo)航? 大數(shù)據(jù)? HBase? 數(shù)據(jù)管理
中圖分類號:P208? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ?文章編號:1674-098X(2021)06(a)-0080-05
The Design and Implementation of Data Management System of Navigation Monitoring Station
LIU Yinggang? GU Chao? HOU Guanghua? LUO Wei
(Unit 61773, PLA, Wulumuqi, Xinjiang Uygur Autonomous Region, 831400? China)
Abstract: At present, the monitoring task of the navigation monitoring station (abbreviated as the monitoring station) is becoming increasingly heavy, and all kinds of data received and stored are increasing. How to effectively manage these monitoring data and provide data support for improving the positioning accuracy and stability of the system has become an urgent problem to be solved. In view of this problem, we use the current mature big data technology to develop data storage management system, change the backward way of using CD-ROM to manage data, solve the problem of massive observation data storage management, improve the quality and efficiency of operation and maintenance management of the monitoring station, and provide reliable support for improving the service performance of satellite navigation system.
Key Words: Observation data; Monitoring station; Satellite navigation; Big data; HBase; Data management
監(jiān)測站是衛(wèi)星導(dǎo)航系統(tǒng)的關(guān)鍵組成部分[1],為導(dǎo)航業(yè)務(wù)提供了大量原始監(jiān)測數(shù)據(jù)。隨著在軌運行的導(dǎo)航衛(wèi)星數(shù)量不斷增多,監(jiān)測站的監(jiān)測任務(wù)日益繁重,接收的監(jiān)測數(shù)據(jù)成倍增加,年處理數(shù)據(jù)量在10TB以上,當(dāng)前采用數(shù)據(jù)文件來管理和光盤存儲數(shù)據(jù)的方式已不能滿足實際工作需要。要對這種海量的數(shù)據(jù)進(jìn)行存儲管理和分析處理,單臺計算機(jī)或服務(wù)器已不能滿足數(shù)據(jù)處理所需要的讀寫速度和計算能力,迫切需要一種新的模式來存儲和管理數(shù)據(jù),需要具有更強(qiáng)性能的硬件平臺,利用集群的威力實現(xiàn)高效的計算,完成海量數(shù)據(jù)的存儲和管理。
為了有效管理這些監(jiān)測數(shù)據(jù),以便后續(xù)分析利用監(jiān)測數(shù)據(jù),為系統(tǒng)長期穩(wěn)定可靠運行提供強(qiáng)有力的支持[2],從監(jiān)測站的實際工作需求出發(fā),提出了監(jiān)測站數(shù)據(jù)管理系統(tǒng)設(shè)計方案,進(jìn)行了數(shù)據(jù)管理系統(tǒng)的體系結(jié)構(gòu)、軟硬件設(shè)計和存儲管理軟件具體實現(xiàn)的分析。
1? 數(shù)據(jù)庫設(shè)計
1.1 監(jiān)測數(shù)據(jù)庫容量分析
目前監(jiān)測站數(shù)據(jù)是按照單機(jī)存儲文件方式進(jìn)行組織管理。監(jiān)測站需長期存儲管理的數(shù)據(jù)有對衛(wèi)星導(dǎo)航信號的偽距、載波相位、導(dǎo)航電文等進(jìn)行監(jiān)測產(chǎn)生的原始數(shù)據(jù)[3],還有氣象設(shè)備采集的數(shù)據(jù),經(jīng)過處理后的中間數(shù)據(jù),以及設(shè)備工況等數(shù)據(jù)。經(jīng)過計算,監(jiān)測站1d存儲各種數(shù)據(jù)需大約36G的存儲空間;按照一年365d計算,每年需要的存儲空間為36G×365= 13140G,按14T計算;因需要對數(shù)據(jù)進(jìn)行長期存儲管理,目前暫定數(shù)據(jù)的存儲時間為10年,此外光盤存儲的30TB早期數(shù)據(jù)需入庫管理,則數(shù)據(jù)庫容量為14T× 10+30=170TB。
1.2 數(shù)據(jù)庫設(shè)計
在本系統(tǒng)的數(shù)據(jù)庫設(shè)計中按照以下4個方面的要求完成對數(shù)據(jù)庫的設(shè)計。(1)數(shù)據(jù)庫選型。數(shù)據(jù)存儲管理需要重點考慮數(shù)據(jù)存儲管理的效率、安全性及可維護(hù)性3個方面。(2)數(shù)據(jù)分類組成分析。(3)進(jìn)行數(shù)據(jù)分析、數(shù)據(jù)重組、數(shù)據(jù)轉(zhuǎn)換以及數(shù)據(jù)加載操作。(4)對數(shù)據(jù)庫進(jìn)行評價、調(diào)整、修改,經(jīng)過反復(fù)分析得出最終結(jié)果,直到數(shù)據(jù)在工作實際、系統(tǒng)需求上均滿足要求為止。在設(shè)計中重點考慮了以下問題。
一是數(shù)據(jù)庫選型。由于觀測量較多,原始觀測數(shù)據(jù)表中每天要存儲近30萬條記錄,1年將產(chǎn)生超過9000萬條記錄。對于數(shù)量如此之大的表該如何分區(qū)進(jìn)行存儲,并提高查詢效率需認(rèn)真考慮。按照上述要求和實際情況,確定本系統(tǒng)采用Hadoop平臺構(gòu)建分布式的數(shù)據(jù)存儲平臺,使用HBase數(shù)據(jù)庫代替擴(kuò)展維護(hù)性能差的傳統(tǒng)數(shù)據(jù)庫[4],很好地適應(yīng)了監(jiān)測站數(shù)據(jù)量巨大、數(shù)據(jù)類型多樣、數(shù)據(jù)關(guān)聯(lián)關(guān)系復(fù)雜的特性,提高數(shù)據(jù)存儲、查詢的效率。本項目數(shù)據(jù)庫模型采用面向列存儲的HBase數(shù)據(jù)模型,數(shù)據(jù)是按列存儲的,方便存儲結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù),方便數(shù)據(jù)壓縮,對針對某一列或者某幾列的查詢有非常大的IO優(yōu)勢。而這些特點,正好滿足監(jiān)測站對某些特征數(shù)據(jù)的長期管理和分析研究需要。
二是數(shù)據(jù)表設(shè)計。按照數(shù)據(jù)庫設(shè)計的基本原則來設(shè)計各個數(shù)據(jù)表,減少數(shù)據(jù)冗余,兼顧數(shù)據(jù)存取速度和存儲容量,根據(jù)監(jiān)測站設(shè)備和類型作用劃分存儲不同的數(shù)據(jù)表,存儲不同類型和設(shè)備的數(shù)據(jù),本系統(tǒng)數(shù)據(jù)表主要有:原始觀測數(shù)據(jù)表、衛(wèi)通數(shù)據(jù)表、氣象數(shù)據(jù)表、設(shè)備工況表等數(shù)據(jù)表。以衛(wèi)通數(shù)據(jù)表為例,該表記錄衛(wèi)星通信天線跟蹤衛(wèi)星的方位俯仰角度、衛(wèi)通接收信號和衛(wèi)通發(fā)射信號的電平值等信息,作為獨立的數(shù)據(jù)表進(jìn)行存儲,表命名為Siglvl,其詳細(xì)表結(jié)構(gòu)如表1所示。
三是行鍵(ROWKEY)設(shè)計。監(jiān)測站的觀測數(shù)據(jù)是以時間為時序,每秒產(chǎn)生一組的觀測數(shù)據(jù),設(shè)計HBase數(shù)據(jù)表時要注意以下幾點:Rowkey的唯一性原則,將經(jīng)常讀取的數(shù)據(jù)存儲到一塊,將最近可能會被訪問的數(shù)據(jù)放到一塊;Rowkey長度原則,建議越短越好,不要超過16個字節(jié),從而提高HFile的存儲效率,提高M(jìn)emStore檢索效率;Rowkey散列原則,防止數(shù)據(jù)檢索的時候負(fù)載集中在個別的RegionServer上,造成熱點問題和域服務(wù)器的擁塞,降低查詢效率。行鍵要滿足以上條件,與數(shù)據(jù)行記錄一一對應(yīng),并且數(shù)據(jù)要能較均衡的存儲在各個域服務(wù)節(jié)點上,避免“熱點”問題,相鄰的數(shù)據(jù)盡可能分布在同一臺域服務(wù)節(jié)點,以減少磁盤I/O,提高數(shù)據(jù)查詢搜索效率。設(shè)計行鍵格式如表2所示,例如第112周第4800秒的數(shù)據(jù)記錄的行鍵為004800-0112。
四是數(shù)據(jù)表的預(yù)分區(qū)。對于數(shù)據(jù)表預(yù)先劃分多個分區(qū),分配到不同的域服務(wù)節(jié)點上,然后根據(jù)Rowkey分配到不同域服務(wù)器,既要避免熱點問題,又要避免連續(xù)的數(shù)據(jù)過于分散,防止數(shù)據(jù)讀取效率低下。
1.3? 數(shù)據(jù)安全策略
監(jiān)測站數(shù)據(jù)的安全性是系統(tǒng)設(shè)計時的重點之一。本系統(tǒng)采用HDFS文件系統(tǒng)作為數(shù)據(jù)存儲及管理的基本策略和實現(xiàn)方式,相比于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有明顯的優(yōu)勢[5]。一是大規(guī)模數(shù)據(jù)分布存儲能力,HDFS以分布式存儲方式和良好的可擴(kuò)展性提供了大規(guī)模數(shù)據(jù)的存儲能力,整個文件系統(tǒng)的容量可隨集群中節(jié)點的增加而線性擴(kuò)展。HDFS不僅可存儲GB級到TB級別大小的單個文件,還可以支持在一個文件系統(tǒng)中存儲高達(dá)數(shù)千萬量級的文件數(shù)量,并且應(yīng)用程序感覺不到數(shù)據(jù)在物理上分布存儲在一組不同機(jī)器上。二是強(qiáng)大的容錯能力,HDFS將每個文件分成若干個數(shù)據(jù)塊,通過隨機(jī)方式分布存儲在不同數(shù)據(jù)節(jié)點,同時每個數(shù)據(jù)塊有多個副本,系統(tǒng)能監(jiān)測硬件故障,并且能自動從故障中快速恢復(fù),確保數(shù)據(jù)不丟失。三是訪問速度快,HDFS以多節(jié)點訪問方式提供很高的數(shù)據(jù)訪問帶寬,并且可以把帶寬的大小等比例擴(kuò)展到集群中的全部節(jié)點上。
2? 系統(tǒng)實現(xiàn)
2.1 系統(tǒng)的體系結(jié)構(gòu)
本系統(tǒng)中,數(shù)據(jù)管理(數(shù)據(jù)的導(dǎo)入和導(dǎo)出)和數(shù)據(jù)查詢分析模塊中運算較多,并且參與運算的參數(shù)多、數(shù)據(jù)量大,采用C/S結(jié)構(gòu),以提高系統(tǒng)的運行速度。本系統(tǒng)采用Hadoop平臺構(gòu)建分布式的數(shù)據(jù)存儲平臺,使用HBase管理數(shù)據(jù),使用JDO進(jìn)行數(shù)據(jù)庫的訪問[6-7],客戶端使用Java語言開發(fā)了圖形界面程序和命令行程序,系統(tǒng)結(jié)構(gòu)如圖1所示。
2.2? 系統(tǒng)環(huán)境搭建
服務(wù)器硬件配置:集群由6臺浪潮英信NF5280服務(wù)器組成。配置情為:CPU為雙路 Intel E8300,內(nèi)存為256G,磁盤為4TB×8。磁盤總?cè)萘繛?92GB,滿足系統(tǒng)需要。選用萬兆交換機(jī)可以避免在數(shù)據(jù)密集型作業(yè)中,集群帶寬對系統(tǒng)性能的制約,完全滿足系統(tǒng)數(shù)據(jù)處理的需求。
服務(wù)器軟件安裝及配置主要有以下4個步驟。
(1)安裝操作系統(tǒng)。操作系統(tǒng)選用Red Hat Enterprise Linux開源代碼編譯而成的CentOS 7.2操作系統(tǒng),滿足集群搭建和運行的系統(tǒng)環(huán)境。
(2)系統(tǒng)環(huán)境配置。安裝Java運行環(huán)境Oracle JDK1.8,關(guān)閉防火墻并禁止自動啟動,關(guān)閉SELINUX并禁止自啟動,關(guān)閉并禁止啟動虛擬網(wǎng)橋,配置DNS域名服務(wù),為每臺服務(wù)器配置IP地址,修改每臺服務(wù)器的HOST文件配置,配置NTP網(wǎng)絡(luò)時間同步,在node1節(jié)點服務(wù)器上安裝時間同步服務(wù),其它服務(wù)器通過網(wǎng)絡(luò)與node1進(jìn)行時間同步,保證集群內(nèi)時間一致。安裝SSH、配置SSH無密碼登錄。
(3)數(shù)據(jù)庫軟件安裝。更新系統(tǒng)軟件并安裝MySQL5.6.35,初始化MySQL,更改用戶名密碼,為Cloudera Manager集群管理平臺創(chuàng)建數(shù)據(jù)庫,將MySQL數(shù)據(jù)庫的Java驅(qū)動拷貝到指定目錄。
(4)Cloudera Manager集群管理平臺安裝。將下載好的CDH Parcels包上傳到node1服務(wù)器,安裝cloudera-manager集群管理平臺的服務(wù)端,在node1服務(wù)器上安裝cloudera-manager-server-5.9.0服務(wù)端,并啟動cloudera-scm-server服務(wù),在node1至node6上分別安裝客戶端服務(wù)cloudera-manager-agent-5.9.0,并啟動cloudera-scm-agent服務(wù)。
(5)Hadoop集群安裝。使用cloudera manager集群管理平臺在6個服務(wù)器節(jié)點上安裝CDH5.9.0的Hadoop集群。安裝完成后通過查看上面的功能模塊可以查看集群的組件構(gòu)成,同時還可以繼續(xù)添加新的角色服務(wù),如圖2所示,可以查看集群內(nèi)所有主機(jī)的工作狀態(tài)。
2.3? 數(shù)據(jù)庫創(chuàng)建和優(yōu)化
首先創(chuàng)建各數(shù)據(jù)表,使用批命令將所有數(shù)據(jù)表創(chuàng)建好,以衛(wèi)通數(shù)據(jù)表創(chuàng)建為例,代碼如下。
數(shù)據(jù)庫創(chuàng)建結(jié)合性能優(yōu)化一并進(jìn)行[8],主要內(nèi)容如下。一是選取和適當(dāng)?shù)膲嚎s策略,經(jīng)過比較GZip、LZO、SNAPPY三種壓縮方式,考慮壓縮對CPU、內(nèi)存資源消耗以及處理速度各方面的綜合因素,采用SNAPPY軟件方式對數(shù)據(jù)進(jìn)行壓縮。二是提高數(shù)據(jù)的I/O效率,關(guān)閉HTable的AutoFlush屬性,關(guān)閉“寫WAL日志”參數(shù),使寫入數(shù)據(jù)在客戶端進(jìn)行緩存,直到數(shù)據(jù)達(dá)到達(dá)到某個閾值的容量時,批量寫入數(shù)據(jù)庫。三是優(yōu)化合并操作,大合并(Major Compaction)過程非常消耗系統(tǒng)資源,默認(rèn)情況下,執(zhí)行大合并的周期是1d。結(jié)合項目研發(fā)實際情況,取消周期性大合并操作,手動控制在系統(tǒng)空閑時刻進(jìn)行大合并操作。
2.4? 數(shù)據(jù)存儲軟件實現(xiàn)
將大量的監(jiān)測數(shù)據(jù)按照相應(yīng)的格式存入數(shù)據(jù)庫是必須解決的問題[9],即實現(xiàn)本系統(tǒng)中監(jiān)測數(shù)據(jù)導(dǎo)入和導(dǎo)出模塊的功能,本功能在客戶端部署。監(jiān)測站每類數(shù)據(jù)都有不同的信息幀格式,按照接口協(xié)議通過網(wǎng)絡(luò)向外播發(fā)。播發(fā)的信息種類繁多,在程序設(shè)計時,要準(zhǔn)確把握信息幀格式及內(nèi)容,根據(jù)幀格式定位解幀出相應(yīng)數(shù)據(jù),同時需要考慮檢驗數(shù)據(jù)幀有效性、程序執(zhí)行效率、數(shù)據(jù)格式轉(zhuǎn)換等多方面的問題。在程序設(shè)計時較好解決了原始數(shù)據(jù)存儲中斷、主備機(jī)問題、數(shù)據(jù)丟秒問題、數(shù)據(jù)解幀的批量處理等問題。數(shù)據(jù)存儲軟件的程序流程如圖3所示。
根據(jù)實際工作需要,數(shù)據(jù)存儲軟件分為圖形界面程序和命令行程序,均采用Java語言編程實現(xiàn)數(shù)據(jù)的解幀和導(dǎo)入大數(shù)據(jù)平臺Hbase數(shù)據(jù)庫。圖形界面程序的優(yōu)點是操作簡單直觀,可視化效果好,缺點是不能批量處理數(shù)據(jù)。圖形界面程序如圖4所示。
圖形界面程序占用資源較大,每次僅能處理一個數(shù)據(jù)文件,人工干預(yù)較多,不利于批量數(shù)據(jù)處理。為此,開發(fā)了命令行程序,可處理大批量數(shù)據(jù),節(jié)省數(shù)據(jù)處理時間。命令格式為:Data.jar [-選項] [源文件] [結(jié)果文件],命令中[-選項]參數(shù)用來選擇監(jiān)測數(shù)據(jù)類型以及是按照文件處理還是存入Hbase數(shù)據(jù)庫。
2.5? 監(jiān)測站數(shù)據(jù)查詢統(tǒng)計功能
系統(tǒng)要求監(jiān)測站可以存儲10年的所有數(shù)據(jù)。監(jiān)測站數(shù)據(jù)查詢統(tǒng)計功能則提供對這些數(shù)據(jù)進(jìn)行查詢統(tǒng)計,以方便事后分析,按照數(shù)據(jù)庫的組織方式提供相關(guān)的數(shù)據(jù)查詢、統(tǒng)計、顯示等,方便查閱,監(jiān)測站數(shù)據(jù)查詢統(tǒng)計功能界面如圖5所示。
3? 結(jié)語
本文對導(dǎo)航監(jiān)測站數(shù)據(jù)長期管理進(jìn)行了探索實踐,對監(jiān)測站內(nèi)關(guān)鍵的數(shù)據(jù)進(jìn)行了入庫管理,解決了海量監(jiān)測數(shù)據(jù)存儲管理的難題,提高了工作效率,增強(qiáng)了數(shù)據(jù)安全性,為后續(xù)的監(jiān)測數(shù)據(jù)分析、監(jiān)測站性能評估和故障告警提供強(qiáng)有力的數(shù)據(jù)支持。
參考文獻(xiàn)
[1] 李洋,李路程.衛(wèi)星導(dǎo)航系統(tǒng)監(jiān)測站軟件主備機(jī)切換設(shè)計和實現(xiàn)[J].現(xiàn)代導(dǎo)航,2021,12(2):111-115.
[2] 曹紀(jì)東,唐桂芬,劉曉萍,等.基于大數(shù)據(jù)技術(shù)的北斗導(dǎo)航信息服務(wù)性能提升[J].中國科學(xué):物理學(xué)力學(xué)天文學(xué),2015,45(7):1-6.
[3] 劉浩.衛(wèi)星導(dǎo)航監(jiān)測關(guān)鍵技術(shù)研究與實現(xiàn)[D].西安:西安電子科技大學(xué),2019.
[4] 毛江山.基于大數(shù)據(jù)分析的輸電線路管理系統(tǒng)及故障診斷研究[J].電子測試,2016(24):101-102.
[5] 楊雪峰.基于大數(shù)據(jù)的交通信息采集與處理方法研究[D].北京:北京林業(yè)大學(xué),2017.
[6] 蔡曉晨,徐勇.基于Hadoop框架在電力大數(shù)據(jù)技術(shù)的探究[J].信息技術(shù)與信息化,2019(12):254-256.
[7] 姜文.基于Hadoop平臺的數(shù)據(jù)分析和應(yīng)用[D].北京:北京郵電大學(xué),2011.
[8] 李紹俊,楊海軍,黃耀歡,等.基于NoSQL數(shù)據(jù)庫的空間大數(shù)據(jù)分布式存儲策略[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2017,42(2):163-169.
[9] 王曉明,陳媛.基于Python的數(shù)據(jù)采集存儲軟件[J].中國無線電,2018(4):49-51.