溫建偉 張立 李永利


摘 要:根據氣象業務應用對數據提出的時效性和多業務訪問場景等需要,設計了可以同時訪問結構化和非結構化數據的分布式氣象大數據存儲模型。在Spark系統基礎上,采用MongoDB和JSON技術構建了試驗模型,使用站點類、衛星和雷達遙感等數據進行數據查詢試驗。試驗結果表明:氣象大數據分布式存儲結構和快速查詢技術優于傳統的數據庫存儲和訪問技術,具有存儲容量大、可擴展性高和訪問快速等特點。
關鍵詞:氣象數據;結構化數據;非結構化數據;存儲模型;分布式;數據查詢
中圖分類號:TP311.13;P409 文獻標識碼:A 文章編號:1003-5168(2021)26-0144-03
Research on Storage Management and Fast Query Technology
of Meteorological Big Data
WEN Jianwei ZHANG Li LI Yongli
(Inner Mongolia Meteorological Information Center, Hohhot Inner Mongolia 010051)
Abstract: This paper designs a distributed meteorological big data storage model that can access both structured data and unstructured data at the same time in response to the timeliness and multi-service access scenarios proposed by meteorological services. Based on the Spark system, MongoDB and JSON technology are used to build the experimental model. The meteorological station data, satellite data, and radar remote sensing data are used to test the data query. The experimental results show that the distributed storage structure and fast query technology of meteorological big data are superior to the traditional database storage and access technology, and have the characteristics of large storage capacity, scalability and access fast.
Keywords: meteorological data;structured data;unstructured data;storage model;distributed storage;data query
氣象探測技術的出現,特別是大氣遙感技術的發展和自動觀測技術的進步,使得氣象探測資料和觀測產品的種類和應用頻次與日俱增,導致氣象信息的獲取、處理、管理和應用方式都發生了根本性變化。目前,傳統的數據庫存儲與查詢技術已無法滿足海量氣象數據存儲和查詢的需求。為此,國內外氣象部門積極謀求大數據環境下氣象數據管理能力的新增長,升級傳統的數據存儲服務技術架構,以滿足氣象業務發展對海量增長的氣象大數據的高效存儲、計算與分析應用需求[1]。
如何在現有氣象業務系統計算與存儲的基礎上,結合海量氣象數據擴展的需要,采用分布式存儲與云計算技術實現與現有業務的無縫集成,并解決不同氣象業務系統對數據存儲訪問的響應時間的問題,是本文研究的重點。
1 氣象大數據分布式存儲模型
1.1 氣象大數據分布式存儲體系結構
為了保證原有存儲數據能夠繼續使用,并使新的數據能夠按照分布式結構進行存儲和訪問,基于云計算的虛擬技術設計了氣象大數據分布式存儲體系結構,具體如圖1所示[2-3]。
為了使新的數據易擴展和使用,對新生成數據也采用了分布式文件存儲系統,采用Hadoop技術架構作為氣象大數據的底層文件存儲結構,從而為實現高效查詢檢索奠定基礎。
1.2 分布式文件存儲模型
氣象大數據分布式存儲系統的核心是分布式文件系統。在氣象數據中,包含部分單體文件量比較大,導致操作數據的I/O量較大。另外,文件較小但數量非常多,數據訪問則主要體現在定位檢索文件位置,同樣存在消耗時間長的問題。針對上述兩種場景,根據文件訪問的效率將文件訪問方式劃分為普通Hadoop分布式文件系統(Hadoop Distributed File System,HDFS)文件存儲訪問和海量小文件高效存儲訪問[4-5]。本文采用HDFS方式進行分布式存儲,設計了分布式分片和對象存儲模型,并封裝了相應的文件訪問讀寫接口,提高了文件訪問的效率。
氣象數據NetCDF的訪問服務過程為:①讀取HDFS分布式NetCDF文件;②構造內存NetCDF數據對象;③讀寫內存NetCDF對象,對接傳統的NetCDF訪問接口。
1.3 結構化數據訪問模型
氣象數據中典型的結構化數據主要包括地面、高空、土壤及海洋觀測等觀測設備生成的氣象觀測數據。為了實現分布式文件的結構化訪問,并不影響訪問效率,本文設計了基于Spark-SQL的類SQL訪問接口。
從下至上,分布式存儲對象管理模塊負責結構化數據庫表的建立、索引設置、分區設置,存儲優化開關;NewSQL訪問元數據管理模塊負責存儲SQL相關元數據的存儲和維護;NewSQL計算引擎模塊負責查詢條件的設置及保存、多表綜合查詢、分頁列表結果顯示、計數統計及頁數統計等;結構化數據訪問服務模塊通過WebService/Rest服務方式、Grpc服務方式及JAR包形式等將結構化數據訪問的結果封裝成實體內存對象,供外部用戶訪問;訪問場景模塊進一步抽象技術細節,提供多元化接口或者界面訪問方式;頂層管理控制服務模塊是直接面向用戶的模塊,提供菜單式操作界面,完成對應的氣象數據操作。
1.4 NoSQL半結構化數據組織模型
為了實現高效訪問非結構化的氣象數據,本文設計了基于HDFS與MongoDB技術相結合的NoSQL半結構化訪問模型。本模型由5部分組成。
1.4.1 NoSQL數據庫對象管理。半結構化數據對象KV模型定義與管理,支持文檔數據的KV信息定義、分區分片設置、存儲優化開關設置;支持分布式數據對象的水平動態擴展;通過文檔數據庫的KEY信息設置,可支持現有的網格化數據無縫映射到大數據平臺;支持基于網格屬性的信息檢索和瀏覽。
1.4.2 半結構化數據導入導出。支持結構化數據的去結構化操作,進而實現半結構化數據的導入;支持大數據平臺版結構化數據的批量導出作業設置;支持網格化數據導入NoSQL數據庫的匹配操作。
1.4.3 半結構化數據綜合查詢。該部分包括查詢條件的設置及保存、分頁內容描述。進入每一項具體條目,其內容圖形化顯示,如計數統計、頁數統計等。
1.4.4 半結構化數據訪問服務封裝。實現半結構化數據訪問的外部訪問服務封裝,通過WebService方式、OSGI bundle組件方式、JAR包或其他形式,將半結構化數據訪問的結果封裝成JSON對象或圖形對象,供外部用戶訪問。通過半結構化數據的訪問檢索,可通過加入業務化需求,進而支持網格化數據訪問的服務封裝。
1.4.5 NoSQL數據庫維護與監控。圖形化方式對NoSQL數據庫進行實時維護與監控,包括數據庫優化開關設置、服務運行時間、并發連接數、會話、主機資源使用情況及內存堆的使用情況,分布式集群的協調控制參數設置(ZOOKEEPER設置)。
2 氣象數據查詢技術
2.1 NewSQL查詢技術
NewSQL主要針對結構化數據存儲進行高效查詢,提供HDFS文件訪問、ThriftServer SQL訪問、Spark Context訪問。
2.2 NoSQL查詢技術
NoSQL主要針對半結構化數據的查詢,具體分為可擴展的KV列式數據查詢和JSON類型半結構化數據查詢。HBASE采用KV列式存儲,MongoDB采用JSON格式存儲;Storm在不同粒度上進行高速導入導出及數據處理。
3 試驗與結果分析
3.1 試驗環境
為了驗證氣象大數據存儲技術的有效性,以內蒙古氣象局的站點數據、雷達和衛星遙感等數據進行試驗。試驗環境如表1所示。
3.2 站點類數據查詢技術試驗
本文選用站點類氣象常規觀測資料高效查詢作為NewSQL實現的具體案例。試驗采用ThriftServer和SparkContext兩種方式對觀測站信息進行查詢。
使用15年的觀測站資料作為試驗數據集,包括大于1億條的記錄。使用氣象大數據存儲模型進行查詢性能測試,分別使用NewSQL和Oracle兩種技術進行查詢性能對比。
對海量氣象數據進行分區處理后,針對某一分區,在命中索引的情況下,Oracle的查詢效率優于分布式Spark計算,因為此時已經定位到具體分區,無須分布式并行計算。此時無法體現分布式并行計算的優勢,因此傳統的成熟數據庫產品更具優勢。但是,從全表掃描查詢統計結果可以看出,它涉及掃描全表的過程。應用分布式計算查詢模型后,由于增大了數據計算的吞吐速率,查詢的并發度得到極大提高,分布式計算模型的查詢響應速度則明顯優于傳統的集中式存儲模式。
3.3 雷達數據查詢試驗
以雷達數據作為典型數據,收集到大于10億條的記錄,使用MongoDB進行存儲,測試JSON半結構數據的查詢效率。
經查詢測試,在大于10億條記錄的集合中查詢,普通查詢性能優異。
3.4 衛星遙感影像數據查詢試驗
使用MongoDB存儲衛星遙感數據開展查詢試驗。為了提高查詢效率,首先將高分辨率遙感影像進行分塊后,按照拓撲關系存入MongoDB;其次建立空間索引;最后進行范圍和鄰域查詢。以100×100分塊大小將230 GB的30 m影像進行分塊存儲后,開展查詢試驗。
試驗返回記錄1 040條,通過空間范圍查詢,查詢速度表現優異,比傳統文件讀取方式要快很多。
3.5 查詢效率影響分析
通過上面的查詢試驗,可以得出影響氣象大數據分布式存儲數據查詢效率的主要因素:①半結構化數據檢索和查詢過程中數據類型復雜、數據異構,如在決策分析過程中需要牽扯多個氣象影響因素對決策結果進行判別;②海量小文件的查詢檢索定位費時、低效,如批量傳輸的以小文件集合形式存在的觀測資料。
4 結語
氣象大數據組織模型采用HDFS分布式架構存儲數據,采用Spark、HBase、MongoDB進行數據檢索和查詢。在數據組織模型方面對氣象數據進行重構梳理,指定到特定模型結構,因此能夠實現數據空間的擴容、數據形態結構的擴展。通過采用不同層級的參數優化和提供高效查詢接口,實現海量氣象數據的動態平衡。實踐中也發現,系統在生成中還需要開展性能調優的工作,是下一步工作的重點內容。
參考文獻:
[1]曾樂,陳東輝,肖衛青,等.基于Hadoop的氣象數據存儲檢索應用研究[J].信息系統工程,2014(8):138-140.
[2]沈文海.氣象業務信息系統未來基礎架構探討:“云計算”和“大數據”在氣象信息化中的作用[J].氣象科技進展,2015(3):64-66.
[3]楊明,陳曄峰,陳晴,等.氣象數據云數據存儲技術及應用[J].氣象科技,2017(6):1017-1021.
[4]李紹俊,楊海軍,黃耀歡,等.基于NoSQL數據庫的空間大數據分布式存儲策略[J].武漢大學學報(信息科學版),2017(2):163-169.
[5]徐擁軍,何文春,劉媛媛,等.氣象大數據存儲體系設計與實現[J].電子測量技術,2020(22):19-25.
1148501705281