雷 鳴
(天津市氣象信息中心,天津 300074)
隨著信息技術(shù)的進(jìn)步,以及互聯(lián)網(wǎng)和科學(xué)數(shù)據(jù)分析等領(lǐng)域的快速發(fā)展,每年數(shù)據(jù)量近乎在成倍增長,人類社會已進(jìn)入大數(shù)據(jù)的時代[1-2]。而隨著氣象數(shù)據(jù)種類、數(shù)量日益繁多,范圍尺度越來越大,在海量氣象數(shù)據(jù)場景下,無論傳統(tǒng)數(shù)據(jù)庫還是文件系統(tǒng)技術(shù)的查詢和存儲方式都不能很好地滿足氣象數(shù)據(jù)的高性能查詢要求。因?yàn)闅庀髷?shù)據(jù)不僅要在高并發(fā)情況下高速存儲,同時還需要在毫秒級的時間內(nèi)提供數(shù)據(jù)產(chǎn)品服務(wù),而傳統(tǒng)關(guān)系類數(shù)據(jù)庫因?yàn)橐恢滦约s束不能提供大數(shù)據(jù)要求的高強(qiáng)度采集和存儲需求,且維護(hù)比較困難、查詢效率低下[3-4]。同時,現(xiàn)有支撐省級業(yè)務(wù)的CIMISS系統(tǒng)的數(shù)據(jù)處理能力不足,尤其是數(shù)據(jù)的存儲能力和響應(yīng)速度,已不能滿足現(xiàn)有的數(shù)據(jù)服務(wù)要求[5]。
隨著大數(shù)據(jù)時代的到來,低成本、高效率的數(shù)據(jù)存儲方式逐漸受到關(guān)注,將分布式文件系統(tǒng)作為大數(shù)據(jù)存儲載體,是當(dāng)前大數(shù)據(jù)存儲領(lǐng)域相關(guān)技術(shù)的重點(diǎn)關(guān)注方向[6-10]。
基于以上原因,參照大數(shù)據(jù)技術(shù)在各行業(yè)中的成功應(yīng)用[11-14],利用分布式技術(shù)、按照集約化原則,構(gòu)建天津省級氣象大數(shù)據(jù)服務(wù)中心。
考慮到利舊和核心業(yè)務(wù)數(shù)據(jù)難以動遷的實(shí)際問題,擬采用關(guān)系型數(shù)據(jù)存儲、分布式NoSQL數(shù)據(jù)庫存儲、網(wǎng)格存儲系統(tǒng)和分布式NAS存儲相結(jié)合的混合云存儲架構(gòu)。整體系統(tǒng)架構(gòu)如圖1所示。
系統(tǒng)涵蓋了數(shù)據(jù)采集、數(shù)據(jù)存儲到數(shù)據(jù)發(fā)布的整個流程。其中,公有云和私有云構(gòu)成了混合云的架構(gòu)。因?yàn)闅庀髷?shù)據(jù)涉及安全性,目前,公有云上更多的是利用強(qiáng)大的計(jì)算資源,進(jìn)行AI氣象智能產(chǎn)品的研發(fā)和計(jì)算。更多的數(shù)據(jù)存儲和核心功能都集中在私有云當(dāng)中。
圖1 系統(tǒng)總體架構(gòu)
目前,天津省級氣象大數(shù)據(jù)服務(wù)中心的私有云存儲主要由兩部分組成:虛擬機(jī)與物理機(jī),共計(jì)25臺服務(wù)器,物理機(jī)7臺,其余則為虛擬機(jī)(不涵蓋CIMISS數(shù)據(jù)庫的14臺服務(wù)器集群和4臺虛擬機(jī)集群)。整個系統(tǒng)架構(gòu)如圖2所示。
圖2 系統(tǒng)物理架構(gòu)設(shè)計(jì)
全國綜合氣象信息共享系統(tǒng)(CIMISS)是由國家氣象信息中心于2009年組織建設(shè),集數(shù)據(jù)收集、分發(fā)、處理、存儲和共享于一體。2013年,該系統(tǒng)在全國各省級氣象數(shù)據(jù)中心進(jìn)行推廣和部署,為氣象系統(tǒng)各省級部門提供了較好的業(yè)務(wù)支撐和數(shù)據(jù)服務(wù)[15-17]。雖然它已經(jīng)無法更好地提供現(xiàn)代化氣象服務(wù),但卻無法由省級進(jìn)行替換。為了能夠與CIMISS系統(tǒng)進(jìn)行良好的無縫對接,擬通過全國氣象數(shù)據(jù)統(tǒng)一服務(wù)接口(meteorological unified service interface community,MUSIC)[18]將CIMISS數(shù)據(jù)源與本地?cái)?shù)據(jù)服務(wù)中心進(jìn)行整合,提供全國統(tǒng)一、標(biāo)準(zhǔn)、豐富的數(shù)據(jù)訪問服務(wù)和應(yīng)用編程接口(API)。整個數(shù)據(jù)存儲架構(gòu)設(shè)計(jì)如圖3所示。
圖3 系統(tǒng)數(shù)據(jù)架構(gòu)設(shè)計(jì)
數(shù)據(jù)采集層:負(fù)責(zé)從互聯(lián)網(wǎng)、共享目錄、FTP服務(wù)器采集各類探測數(shù)據(jù)、預(yù)報(bào)服務(wù)產(chǎn)品、行業(yè)共享數(shù)據(jù)和互聯(lián)網(wǎng)數(shù)據(jù);
數(shù)據(jù)處理層:主要負(fù)責(zé)采集后的數(shù)據(jù)按照業(yè)務(wù)特性進(jìn)行解析、清洗,存儲模型構(gòu)建等功能;
數(shù)據(jù)存儲層:負(fù)責(zé)對解析后的數(shù)據(jù)按照預(yù)先分類的結(jié)果存儲到對應(yīng)的存儲組件中,格點(diǎn)數(shù)據(jù)存儲到HBase中,站點(diǎn)數(shù)據(jù)存儲到GBase中。而為了提高對格點(diǎn)數(shù)據(jù)的查詢效率,通過將RowKey存儲Elasticsearch(簡稱ES,下同)中實(shí)現(xiàn)快速尋址,快速獲取得到需要查詢的數(shù)據(jù)。
數(shù)據(jù)服務(wù)層:負(fù)責(zé)對數(shù)據(jù)進(jìn)行封裝,結(jié)合MUSIC數(shù)據(jù)接口體系,封裝成站點(diǎn)數(shù)據(jù)接口,格點(diǎn)數(shù)據(jù)接口使用開源swagger數(shù)據(jù)接口進(jìn)行封裝。從而通過接口(API),實(shí)現(xiàn)應(yīng)用與數(shù)據(jù)解耦、數(shù)據(jù)管理與應(yīng)用分離,接口保持穩(wěn)定不變,保障前端應(yīng)用系統(tǒng)穩(wěn)定,不受后端異構(gòu)數(shù)據(jù)環(huán)境、實(shí)現(xiàn)技術(shù)變化無影響。
天津省級氣象大數(shù)據(jù)服務(wù)中心的數(shù)據(jù)可以分為兩大類:結(jié)構(gòu)化數(shù)據(jù)和半/非結(jié)構(gòu)化數(shù)據(jù)。針對前者,采用HBase+GBase分布式數(shù)據(jù)庫存儲;針對后者,采用HBase分布式數(shù)據(jù)庫存儲和氣象數(shù)據(jù)分塊壓縮技術(shù),進(jìn)行氣象數(shù)據(jù)存儲和處理。
站點(diǎn)數(shù)據(jù)、基準(zhǔn)設(shè)備觀測數(shù)據(jù)等數(shù)據(jù)結(jié)構(gòu)化程度高,數(shù)據(jù)結(jié)構(gòu)固定,采用關(guān)系數(shù)據(jù)庫形式對此類數(shù)據(jù)進(jìn)行存儲,簡化了數(shù)據(jù)存儲邏輯,有利于提高數(shù)據(jù)存取效率以及分析速度。
考慮到數(shù)據(jù)中心需要存儲海量數(shù)據(jù),故結(jié)構(gòu)化數(shù)據(jù)需要在存儲集群內(nèi)進(jìn)行分庫分表存儲,以保障數(shù)據(jù)庫的并發(fā)性能。關(guān)系數(shù)據(jù)庫以數(shù)據(jù)來源(如雷達(dá)站、基準(zhǔn)設(shè)備)進(jìn)行分庫存儲,各個數(shù)據(jù)存儲節(jié)點(diǎn)采用Gbase 8a(分析型數(shù)據(jù)庫)、Gbase 8t(關(guān)系型數(shù)據(jù)庫)等高性能數(shù)據(jù)庫,保證在大數(shù)據(jù)場景下能夠?qū)崿F(xiàn)數(shù)據(jù)的高效存取。
同時根據(jù)數(shù)據(jù)的使用需要,為關(guān)系數(shù)據(jù)庫額外建立多種索引形式,以提升數(shù)據(jù)索引效率。除數(shù)據(jù)來源、時間外,數(shù)據(jù)索引主要采用要素、行政區(qū)劃等字段。
對于泛氣象數(shù)據(jù)、各類服務(wù)產(chǎn)品等數(shù)據(jù),其結(jié)構(gòu)化程度低,數(shù)據(jù)參數(shù)一致性低,數(shù)據(jù)大小不定。對于此類非結(jié)構(gòu)化數(shù)據(jù),如果采用通用的結(jié)構(gòu)化存儲方式,必然導(dǎo)致其在數(shù)據(jù)存取方面出現(xiàn)問題,無法滿足業(yè)務(wù)的需求。故此采用HBase非結(jié)構(gòu)化數(shù)據(jù)庫進(jìn)行存儲。
HBase的數(shù)據(jù)表由行和列組成。邏輯上,數(shù)據(jù)存儲在表里,而表由行和列組成,每行由一個可排序的主鍵和任意多的列構(gòu)成,列又歸屬于不同列族。HBase是面向列的稀疏存儲,列族是固定不變的,在創(chuàng)建表時被定義,相當(dāng)于表結(jié)構(gòu)。HBase將同一個列族下的數(shù)據(jù)存儲在同一個目錄下。而列族中的列成員不必在表定義時聲明,可以在表實(shí)時運(yùn)行中動態(tài)定義。
圖4 基于Hadoop的HBase分布式存儲架構(gòu)
在實(shí)際實(shí)現(xiàn)中,預(yù)先根據(jù)非結(jié)構(gòu)化數(shù)據(jù)類型定義所需列族,并預(yù)留若干冗余列族用于后期擴(kuò)展補(bǔ)充。各非結(jié)構(gòu)化數(shù)據(jù)在存儲時僅需將數(shù)據(jù)存入自身對應(yīng)的列族中。在數(shù)據(jù)讀取時,也可根據(jù)列族索引快速檢索所需數(shù)據(jù)。整個系統(tǒng)架構(gòu)如圖4所示。
整個系統(tǒng)的存儲策略設(shè)計(jì)如表1所示。
表1 數(shù)據(jù)存儲方式
其中,為了獲得更高的訪問速度,NAS作為HBase的數(shù)據(jù)源,提供輸入數(shù)據(jù),以獲得毫秒級的數(shù)據(jù)響應(yīng)服務(wù)。
針對以上數(shù)據(jù)存儲環(huán)境進(jìn)行性能測試,測試系統(tǒng)硬件配置為:CPU:i5-3470 3.20 GHz,內(nèi)存:4G,瀏覽器:支持谷歌內(nèi)核的主流瀏覽器,如chrome,則基于WEBGIS的數(shù)據(jù)渲染顯示指標(biāo)如表2所示。
針對頁面的響應(yīng)速度進(jìn)行測試,實(shí)際的各項(xiàng)數(shù)據(jù)查詢響應(yīng)時間如表3所示。
表2 WEBGIS數(shù)據(jù)渲染顯示指標(biāo)
表3 數(shù)據(jù)查詢響應(yīng)時間
為了進(jìn)一步測試系統(tǒng)性能,將文中系統(tǒng)GBase數(shù)據(jù)庫與CIMISS系統(tǒng)中的Oracle傳統(tǒng)數(shù)據(jù)庫進(jìn)行速度響應(yīng)測試對比,庫中共有155 281 334 700條記錄,為1951年至今的70年全部自動站數(shù)據(jù)。測試對比如圖5所示。
可以看到基于大數(shù)據(jù)環(huán)境下的存儲查詢性能比傳統(tǒng)查詢具有明顯的優(yōu)勢,且性能提升的倍數(shù),隨著時間維度的延長而不斷擴(kuò)大,由最初的提升7.6倍增加到21.5倍,而且還有不斷擴(kuò)大的趨勢。
圖5 查詢性能測試對比
針對格點(diǎn)數(shù)據(jù),為了進(jìn)一步提升系統(tǒng)查詢性能,特別使用ES進(jìn)行數(shù)據(jù)檢索,從而發(fā)揮查詢聚合的性能,并利用HBase作為點(diǎn)位數(shù)據(jù)存儲,更大程度地發(fā)揮IO性能。同時,為了盡量減少傳輸時間,將json結(jié)果集數(shù)組化為相應(yīng)的經(jīng)緯度矩陣,并將矩陣寫入csv文件,然后壓縮成tgz文件返回給前端,從而大大降低傳輸數(shù)據(jù)量的大小,提升傳輸效率。
性能對比:采用歷史6個月總計(jì)4萬天津1 km網(wǎng)格數(shù)據(jù)。在進(jìn)行系統(tǒng)測試中,數(shù)據(jù)的響應(yīng)速度能夠在0.3 s內(nèi)到用戶頁面訪問終端,與天津省局舊有一體化平臺中格點(diǎn)數(shù)據(jù)的訪問速度相比,平均速度提升了5倍多。
利用大數(shù)據(jù)存儲技術(shù),以關(guān)系型數(shù)據(jù)存儲、分布式NoSQL數(shù)據(jù)庫存儲、網(wǎng)格存儲系統(tǒng)和分布式NAS存儲相結(jié)合的混合云存儲架構(gòu)為基礎(chǔ),搭建了統(tǒng)一數(shù)據(jù)集、處理和服務(wù)的數(shù)據(jù)中心,并提供了統(tǒng)一的數(shù)據(jù)服務(wù)接口。整個系統(tǒng)具有良好的擴(kuò)展性,可以與傳統(tǒng)數(shù)據(jù)庫通過服務(wù)接口進(jìn)行無縫銜接。同時,數(shù)據(jù)服務(wù)性能得到較大程度的提升,有效保證了現(xiàn)代化氣象服務(wù)的建設(shè)需求。
但也應(yīng)當(dāng)清醒地看到,雖然天津省級氣象大數(shù)據(jù)的建設(shè)已經(jīng)初具規(guī)模,但是仍然有很多不足之處需要去彌補(bǔ)和提升。