溫建偉 張立 李永利
摘 要:根據(jù)氣象業(yè)務(wù)應(yīng)用對數(shù)據(jù)提出的時效性和多業(yè)務(wù)訪問場景等需要,設(shè)計了可以同時訪問結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的分布式氣象大數(shù)據(jù)存儲模型。在Spark系統(tǒng)基礎(chǔ)上,采用MongoDB和JSON技術(shù)構(gòu)建了試驗(yàn)?zāi)P?,使用站點(diǎn)類、衛(wèi)星和雷達(dá)遙感等數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢試驗(yàn)。試驗(yàn)結(jié)果表明:氣象大數(shù)據(jù)分布式存儲結(jié)構(gòu)和快速查詢技術(shù)優(yōu)于傳統(tǒng)的數(shù)據(jù)庫存儲和訪問技術(shù),具有存儲容量大、可擴(kuò)展性高和訪問快速等特點(diǎn)。
關(guān)鍵詞:氣象數(shù)據(jù);結(jié)構(gòu)化數(shù)據(jù);非結(jié)構(gòu)化數(shù)據(jù);存儲模型;分布式;數(shù)據(jù)查詢
中圖分類號:TP311.13;P409 文獻(xiàn)標(biāo)識碼: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
氣象探測技術(shù)的出現(xiàn),特別是大氣遙感技術(shù)的發(fā)展和自動觀測技術(shù)的進(jìn)步,使得氣象探測資料和觀測產(chǎn)品的種類和應(yīng)用頻次與日俱增,導(dǎo)致氣象信息的獲取、處理、管理和應(yīng)用方式都發(fā)生了根本性變化。目前,傳統(tǒng)的數(shù)據(jù)庫存儲與查詢技術(shù)已無法滿足海量氣象數(shù)據(jù)存儲和查詢的需求。為此,國內(nèi)外氣象部門積極謀求大數(shù)據(jù)環(huán)境下氣象數(shù)據(jù)管理能力的新增長,升級傳統(tǒng)的數(shù)據(jù)存儲服務(wù)技術(shù)架構(gòu),以滿足氣象業(yè)務(wù)發(fā)展對海量增長的氣象大數(shù)據(jù)的高效存儲、計算與分析應(yīng)用需求[1]。
如何在現(xiàn)有氣象業(yè)務(wù)系統(tǒng)計算與存儲的基礎(chǔ)上,結(jié)合海量氣象數(shù)據(jù)擴(kuò)展的需要,采用分布式存儲與云計算技術(shù)實(shí)現(xiàn)與現(xiàn)有業(yè)務(wù)的無縫集成,并解決不同氣象業(yè)務(wù)系統(tǒng)對數(shù)據(jù)存儲訪問的響應(yīng)時間的問題,是本文研究的重點(diǎn)。
1 氣象大數(shù)據(jù)分布式存儲模型
1.1 氣象大數(shù)據(jù)分布式存儲體系結(jié)構(gòu)
為了保證原有存儲數(shù)據(jù)能夠繼續(xù)使用,并使新的數(shù)據(jù)能夠按照分布式結(jié)構(gòu)進(jìn)行存儲和訪問,基于云計算的虛擬技術(shù)設(shè)計了氣象大數(shù)據(jù)分布式存儲體系結(jié)構(gòu),具體如圖1所示[2-3]。
為了使新的數(shù)據(jù)易擴(kuò)展和使用,對新生成數(shù)據(jù)也采用了分布式文件存儲系統(tǒng),采用Hadoop技術(shù)架構(gòu)作為氣象大數(shù)據(jù)的底層文件存儲結(jié)構(gòu),從而為實(shí)現(xiàn)高效查詢檢索奠定基礎(chǔ)。
1.2 分布式文件存儲模型
氣象大數(shù)據(jù)分布式存儲系統(tǒng)的核心是分布式文件系統(tǒng)。在氣象數(shù)據(jù)中,包含部分單體文件量比較大,導(dǎo)致操作數(shù)據(jù)的I/O量較大。另外,文件較小但數(shù)量非常多,數(shù)據(jù)訪問則主要體現(xiàn)在定位檢索文件位置,同樣存在消耗時間長的問題。針對上述兩種場景,根據(jù)文件訪問的效率將文件訪問方式劃分為普通Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)文件存儲訪問和海量小文件高效存儲訪問[4-5]。本文采用HDFS方式進(jìn)行分布式存儲,設(shè)計了分布式分片和對象存儲模型,并封裝了相應(yīng)的文件訪問讀寫接口,提高了文件訪問的效率。
氣象數(shù)據(jù)NetCDF的訪問服務(wù)過程為:①讀取HDFS分布式NetCDF文件;②構(gòu)造內(nèi)存NetCDF數(shù)據(jù)對象;③讀寫內(nèi)存NetCDF對象,對接傳統(tǒng)的NetCDF訪問接口。
1.3 結(jié)構(gòu)化數(shù)據(jù)訪問模型
氣象數(shù)據(jù)中典型的結(jié)構(gòu)化數(shù)據(jù)主要包括地面、高空、土壤及海洋觀測等觀測設(shè)備生成的氣象觀測數(shù)據(jù)。為了實(shí)現(xiàn)分布式文件的結(jié)構(gòu)化訪問,并不影響訪問效率,本文設(shè)計了基于Spark-SQL的類SQL訪問接口。
從下至上,分布式存儲對象管理模塊負(fù)責(zé)結(jié)構(gòu)化數(shù)據(jù)庫表的建立、索引設(shè)置、分區(qū)設(shè)置,存儲優(yōu)化開關(guān);NewSQL訪問元數(shù)據(jù)管理模塊負(fù)責(zé)存儲SQL相關(guān)元數(shù)據(jù)的存儲和維護(hù);NewSQL計算引擎模塊負(fù)責(zé)查詢條件的設(shè)置及保存、多表綜合查詢、分頁列表結(jié)果顯示、計數(shù)統(tǒng)計及頁數(shù)統(tǒng)計等;結(jié)構(gòu)化數(shù)據(jù)訪問服務(wù)模塊通過WebService/Rest服務(wù)方式、Grpc服務(wù)方式及JAR包形式等將結(jié)構(gòu)化數(shù)據(jù)訪問的結(jié)果封裝成實(shí)體內(nèi)存對象,供外部用戶訪問;訪問場景模塊進(jìn)一步抽象技術(shù)細(xì)節(jié),提供多元化接口或者界面訪問方式;頂層管理控制服務(wù)模塊是直接面向用戶的模塊,提供菜單式操作界面,完成對應(yīng)的氣象數(shù)據(jù)操作。
1.4 NoSQL半結(jié)構(gòu)化數(shù)據(jù)組織模型
為了實(shí)現(xiàn)高效訪問非結(jié)構(gòu)化的氣象數(shù)據(jù),本文設(shè)計了基于HDFS與MongoDB技術(shù)相結(jié)合的NoSQL半結(jié)構(gòu)化訪問模型。本模型由5部分組成。
1.4.1 NoSQL數(shù)據(jù)庫對象管理。半結(jié)構(gòu)化數(shù)據(jù)對象KV模型定義與管理,支持文檔數(shù)據(jù)的KV信息定義、分區(qū)分片設(shè)置、存儲優(yōu)化開關(guān)設(shè)置;支持分布式數(shù)據(jù)對象的水平動態(tài)擴(kuò)展;通過文檔數(shù)據(jù)庫的KEY信息設(shè)置,可支持現(xiàn)有的網(wǎng)格化數(shù)據(jù)無縫映射到大數(shù)據(jù)平臺;支持基于網(wǎng)格屬性的信息檢索和瀏覽。
1.4.2 半結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入導(dǎo)出。支持結(jié)構(gòu)化數(shù)據(jù)的去結(jié)構(gòu)化操作,進(jìn)而實(shí)現(xiàn)半結(jié)構(gòu)化數(shù)據(jù)的導(dǎo)入;支持大數(shù)據(jù)平臺版結(jié)構(gòu)化數(shù)據(jù)的批量導(dǎo)出作業(yè)設(shè)置;支持網(wǎng)格化數(shù)據(jù)導(dǎo)入NoSQL數(shù)據(jù)庫的匹配操作。
1.4.3 半結(jié)構(gòu)化數(shù)據(jù)綜合查詢。該部分包括查詢條件的設(shè)置及保存、分頁內(nèi)容描述。進(jìn)入每一項(xiàng)具體條目,其內(nèi)容圖形化顯示,如計數(shù)統(tǒng)計、頁數(shù)統(tǒng)計等。
1.4.4 半結(jié)構(gòu)化數(shù)據(jù)訪問服務(wù)封裝。實(shí)現(xiàn)半結(jié)構(gòu)化數(shù)據(jù)訪問的外部訪問服務(wù)封裝,通過WebService方式、OSGI bundle組件方式、JAR包或其他形式,將半結(jié)構(gòu)化數(shù)據(jù)訪問的結(jié)果封裝成JSON對象或圖形對象,供外部用戶訪問。通過半結(jié)構(gòu)化數(shù)據(jù)的訪問檢索,可通過加入業(yè)務(wù)化需求,進(jìn)而支持網(wǎng)格化數(shù)據(jù)訪問的服務(wù)封裝。
1.4.5 NoSQL數(shù)據(jù)庫維護(hù)與監(jiān)控。圖形化方式對NoSQL數(shù)據(jù)庫進(jìn)行實(shí)時維護(hù)與監(jiān)控,包括數(shù)據(jù)庫優(yōu)化開關(guān)設(shè)置、服務(wù)運(yùn)行時間、并發(fā)連接數(shù)、會話、主機(jī)資源使用情況及內(nèi)存堆的使用情況,分布式集群的協(xié)調(diào)控制參數(shù)設(shè)置(ZOOKEEPER設(shè)置)。
2 氣象數(shù)據(jù)查詢技術(shù)
2.1 NewSQL查詢技術(shù)
NewSQL主要針對結(jié)構(gòu)化數(shù)據(jù)存儲進(jìn)行高效查詢,提供HDFS文件訪問、ThriftServer SQL訪問、Spark Context訪問。
2.2 NoSQL查詢技術(shù)
NoSQL主要針對半結(jié)構(gòu)化數(shù)據(jù)的查詢,具體分為可擴(kuò)展的KV列式數(shù)據(jù)查詢和JSON類型半結(jié)構(gòu)化數(shù)據(jù)查詢。HBASE采用KV列式存儲,MongoDB采用JSON格式存儲;Storm在不同粒度上進(jìn)行高速導(dǎo)入導(dǎo)出及數(shù)據(jù)處理。
3 試驗(yàn)與結(jié)果分析
3.1 試驗(yàn)環(huán)境
為了驗(yàn)證氣象大數(shù)據(jù)存儲技術(shù)的有效性,以內(nèi)蒙古氣象局的站點(diǎn)數(shù)據(jù)、雷達(dá)和衛(wèi)星遙感等數(shù)據(jù)進(jìn)行試驗(yàn)。試驗(yàn)環(huán)境如表1所示。
3.2 站點(diǎn)類數(shù)據(jù)查詢技術(shù)試驗(yàn)
本文選用站點(diǎn)類氣象常規(guī)觀測資料高效查詢作為NewSQL實(shí)現(xiàn)的具體案例。試驗(yàn)采用ThriftServer和SparkContext兩種方式對觀測站信息進(jìn)行查詢。
使用15年的觀測站資料作為試驗(yàn)數(shù)據(jù)集,包括大于1億條的記錄。使用氣象大數(shù)據(jù)存儲模型進(jìn)行查詢性能測試,分別使用NewSQL和Oracle兩種技術(shù)進(jìn)行查詢性能對比。
對海量氣象數(shù)據(jù)進(jìn)行分區(qū)處理后,針對某一分區(qū),在命中索引的情況下,Oracle的查詢效率優(yōu)于分布式Spark計算,因?yàn)榇藭r已經(jīng)定位到具體分區(qū),無須分布式并行計算。此時無法體現(xiàn)分布式并行計算的優(yōu)勢,因此傳統(tǒng)的成熟數(shù)據(jù)庫產(chǎn)品更具優(yōu)勢。但是,從全表掃描查詢統(tǒng)計結(jié)果可以看出,它涉及掃描全表的過程。應(yīng)用分布式計算查詢模型后,由于增大了數(shù)據(jù)計算的吞吐速率,查詢的并發(fā)度得到極大提高,分布式計算模型的查詢響應(yīng)速度則明顯優(yōu)于傳統(tǒng)的集中式存儲模式。
3.3 雷達(dá)數(shù)據(jù)查詢試驗(yàn)
以雷達(dá)數(shù)據(jù)作為典型數(shù)據(jù),收集到大于10億條的記錄,使用MongoDB進(jìn)行存儲,測試JSON半結(jié)構(gòu)數(shù)據(jù)的查詢效率。
經(jīng)查詢測試,在大于10億條記錄的集合中查詢,普通查詢性能優(yōu)異。
3.4 衛(wèi)星遙感影像數(shù)據(jù)查詢試驗(yàn)
使用MongoDB存儲衛(wèi)星遙感數(shù)據(jù)開展查詢試驗(yàn)。為了提高查詢效率,首先將高分辨率遙感影像進(jìn)行分塊后,按照拓?fù)潢P(guān)系存入MongoDB;其次建立空間索引;最后進(jìn)行范圍和鄰域查詢。以100×100分塊大小將230 GB的30 m影像進(jìn)行分塊存儲后,開展查詢試驗(yàn)。
試驗(yàn)返回記錄1 040條,通過空間范圍查詢,查詢速度表現(xiàn)優(yōu)異,比傳統(tǒng)文件讀取方式要快很多。
3.5 查詢效率影響分析
通過上面的查詢試驗(yàn),可以得出影響氣象大數(shù)據(jù)分布式存儲數(shù)據(jù)查詢效率的主要因素:①半結(jié)構(gòu)化數(shù)據(jù)檢索和查詢過程中數(shù)據(jù)類型復(fù)雜、數(shù)據(jù)異構(gòu),如在決策分析過程中需要牽扯多個氣象影響因素對決策結(jié)果進(jìn)行判別;②海量小文件的查詢檢索定位費(fèi)時、低效,如批量傳輸?shù)囊孕∥募闲问酱嬖诘挠^測資料。
4 結(jié)語
氣象大數(shù)據(jù)組織模型采用HDFS分布式架構(gòu)存儲數(shù)據(jù),采用Spark、HBase、MongoDB進(jìn)行數(shù)據(jù)檢索和查詢。在數(shù)據(jù)組織模型方面對氣象數(shù)據(jù)進(jìn)行重構(gòu)梳理,指定到特定模型結(jié)構(gòu),因此能夠?qū)崿F(xiàn)數(shù)據(jù)空間的擴(kuò)容、數(shù)據(jù)形態(tài)結(jié)構(gòu)的擴(kuò)展。通過采用不同層級的參數(shù)優(yōu)化和提供高效查詢接口,實(shí)現(xiàn)海量氣象數(shù)據(jù)的動態(tài)平衡。實(shí)踐中也發(fā)現(xiàn),系統(tǒng)在生成中還需要開展性能調(diào)優(yōu)的工作,是下一步工作的重點(diǎn)內(nèi)容。
參考文獻(xiàn):
[1]曾樂,陳東輝,肖衛(wèi)青,等.基于Hadoop的氣象數(shù)據(jù)存儲檢索應(yīng)用研究[J].信息系統(tǒng)工程,2014(8):138-140.
[2]沈文海.氣象業(yè)務(wù)信息系統(tǒng)未來基礎(chǔ)架構(gòu)探討:“云計算”和“大數(shù)據(jù)”在氣象信息化中的作用[J].氣象科技進(jìn)展,2015(3):64-66.
[3]楊明,陳曄峰,陳晴,等.氣象數(shù)據(jù)云數(shù)據(jù)存儲技術(shù)及應(yīng)用[J].氣象科技,2017(6):1017-1021.
[4]李紹俊,楊海軍,黃耀歡,等.基于NoSQL數(shù)據(jù)庫的空間大數(shù)據(jù)分布式存儲策略[J].武漢大學(xué)學(xué)報(信息科學(xué)版),2017(2):163-169.
[5]徐擁軍,何文春,劉媛媛,等.氣象大數(shù)據(jù)存儲體系設(shè)計與實(shí)現(xiàn)[J].電子測量技術(shù),2020(22):19-25.
1148501705281