樊宇虹,馮永祥,馬志強(qiáng),劉利民,李雷孝
(內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,內(nèi)蒙古 呼和浩特010080)
氣象觀測(cè)數(shù)據(jù)主要采用報(bào)文文件或數(shù)據(jù)庫(kù)形式進(jìn)行存儲(chǔ),且正以指數(shù)級(jí)增長(zhǎng)。其主要用于:①數(shù)據(jù)分析,形成天氣預(yù)報(bào)、災(zāi)害預(yù)報(bào),為其它部門(mén)提供決策支持;②作為資料進(jìn)行保存,為其它研究提供氣象數(shù)據(jù)支持[1]。
云計(jì)算的分布式存儲(chǔ)和并行化處理都被設(shè)計(jì)用來(lái)存儲(chǔ)和處理海量數(shù)據(jù),為大數(shù)據(jù)的存儲(chǔ)和計(jì)算提供了一種解決方案。云計(jì)算理念、方法在氣象部門(mén)的適度引入和有效普及應(yīng)用,可能極大地簡(jiǎn)化基層氣象單位的業(yè)務(wù)工作環(huán)境,真正實(shí)現(xiàn)資料的優(yōu)化組合和業(yè)務(wù)布局的專(zhuān)業(yè)化,完成氣象部門(mén)信息系統(tǒng)架構(gòu)的最優(yōu)化調(diào)整和合理配置[2]。
目前,氣象觀測(cè)數(shù)據(jù)存儲(chǔ)和管理面臨的主要問(wèn)題:
(1)存儲(chǔ)管理。隨著科學(xué)技術(shù)的發(fā)展,人類(lèi)可以探測(cè)到的氣象屬性也在不斷增加,氣象資料數(shù)據(jù)量正在不斷增長(zhǎng),需要?dú)庀髷?shù)據(jù)庫(kù)存儲(chǔ)容量和屬性都能動(dòng)態(tài)擴(kuò)展。
(2)響應(yīng)速度。采集到的氣象數(shù)據(jù)是實(shí)時(shí)數(shù)據(jù),應(yīng)實(shí)時(shí)保存,其次用戶在海量氣象數(shù)據(jù)中查詢、統(tǒng)計(jì)和讀取氣象資料數(shù)據(jù)時(shí)應(yīng)及時(shí)響應(yīng)。
(3)數(shù)據(jù)的安全性和穩(wěn)定性。氣象數(shù)據(jù)資料都是寶貴的科研歷史資料,在存儲(chǔ)中要保證數(shù)據(jù)的安全性和穩(wěn)定性,充分利用現(xiàn)有的計(jì)算設(shè)備和資源。
(4)方便使用和維護(hù)。存儲(chǔ)的氣象數(shù)據(jù)是原始資料,通過(guò)管理為后續(xù)業(yè)務(wù)處理提供方便。
本文針對(duì)上述問(wèn)題及氣象部門(mén)對(duì)氣象資料數(shù)據(jù)提出的要求,在ubuntu集群基礎(chǔ)上,采用Hadoop及分布式數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)的結(jié)合,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)私有氣象云存儲(chǔ)系統(tǒng)。
根據(jù)要求可以將模型分為用戶訪問(wèn)接口層、元數(shù)據(jù)存儲(chǔ)層、實(shí)體數(shù)據(jù)存儲(chǔ)層和關(guān)系數(shù)據(jù)庫(kù)4部分[2-5],如圖1所示。
圖1 基于Hadoop的氣象私有云存儲(chǔ)架構(gòu)模型
(1)實(shí)體數(shù)據(jù)存儲(chǔ)層。HDFS 擴(kuò)展性強(qiáng)、可靠性高、成本低并且能夠以較低的成本將海量文件存儲(chǔ)在普通機(jī)器集群上等優(yōu)勢(shì)[6-8],但其作為氣象私有云存儲(chǔ)平臺(tái)底層分布式文件系統(tǒng),適合處理和存儲(chǔ)大文件,所以使用HBase做數(shù)據(jù)庫(kù),HDFS作為底層數(shù)據(jù)存儲(chǔ)容器,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能;又HBase不支持類(lèi)SQL 語(yǔ)句,故使用Hive做數(shù)據(jù)倉(cāng)庫(kù)工具,Hive支持Hsql,可以方便查詢管理操作,及后期開(kāi)發(fā)中通過(guò)API對(duì)數(shù)據(jù)庫(kù)的操作。
(2)元數(shù)據(jù)存儲(chǔ)層。元數(shù)據(jù)存儲(chǔ)層主要實(shí)現(xiàn)氣象數(shù)據(jù)HBase數(shù)據(jù)庫(kù)表和Oracle數(shù)據(jù)庫(kù)表的屬性存儲(chǔ),通過(guò)對(duì)元數(shù)據(jù)庫(kù)表的管理來(lái)實(shí)現(xiàn)氣象數(shù)據(jù)庫(kù)表屬性的映射管理。元數(shù)據(jù)庫(kù)表存儲(chǔ)在HBase中。
(3)關(guān)系數(shù)據(jù)庫(kù)層。選用Oracle關(guān)系數(shù)據(jù)庫(kù)做實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和云存儲(chǔ)平臺(tái)用戶數(shù)據(jù)存儲(chǔ)和管理。HDFS的缺點(diǎn)是響應(yīng)時(shí)間較長(zhǎng),氣象數(shù)據(jù)具有實(shí)時(shí)性,每個(gè)時(shí)間點(diǎn)的數(shù)據(jù)量較小,若小數(shù)據(jù)逐一插入效率較差,故先存入插入數(shù)據(jù)響應(yīng)較快速的關(guān)系數(shù)據(jù)庫(kù)中。選用Sqoop做數(shù)據(jù)傳輸和遷移,將關(guān)系數(shù)據(jù)庫(kù)中氣象數(shù)據(jù)定期遷移到HBase中,這樣可以很好的提高存儲(chǔ)效率。
(4)訪問(wèn)接口層。對(duì)外提供了HTTP 支持WEB 業(yè)務(wù)的訪問(wèn)和API接口提供其它氣象云應(yīng)用業(yè)務(wù)開(kāi)發(fā)。
根據(jù)以上分析,平臺(tái)整體功能結(jié)構(gòu)可以設(shè)計(jì)為數(shù)據(jù)采集模塊、結(jié)果顯示模塊、查詢分析模塊、存儲(chǔ)模塊、數(shù)據(jù)遷移5部分[8-10]。如圖2所示。
圖2 云存儲(chǔ)方案整體結(jié)構(gòu)
(1)數(shù)據(jù)采集模塊。提供可視化的數(shù)據(jù)輸入和數(shù)據(jù)輸入API,可以手動(dòng)發(fā)布?xì)庀髷?shù)據(jù)和接入氣象數(shù)據(jù)采集設(shè)備獲取數(shù)據(jù),將接收到的數(shù)據(jù)存入Oracle數(shù)據(jù)庫(kù)。
(2)存儲(chǔ)模塊。負(fù)責(zé)元數(shù)據(jù)和實(shí)體數(shù)據(jù)的存儲(chǔ),并提供數(shù)據(jù)的備份。HBase和HDFS負(fù)責(zé)元數(shù)據(jù)和實(shí)體數(shù)據(jù)的存儲(chǔ)。HDFS的數(shù)據(jù)存儲(chǔ)不受數(shù)據(jù)類(lèi)型的限制,可以是任何類(lèi)型的數(shù)據(jù)。
(3)查詢分析模塊。主要工具為數(shù)據(jù)倉(cāng)庫(kù)工具Hive,支持類(lèi)HSQL語(yǔ)句,便于查詢,并提供對(duì)外的數(shù)據(jù)查詢管理API。
(4)結(jié)果顯示模塊。提供可視化的查詢結(jié)果顯示、分布式文件系統(tǒng)的結(jié)構(gòu)顯示等功能。
(5)數(shù)據(jù)遷移模塊。該模塊使用Sqoop將Oracle中的數(shù)據(jù)轉(zhuǎn)移到HBase中,自動(dòng)定時(shí)執(zhí)行。
平臺(tái)數(shù)據(jù)模型包括氣象數(shù)據(jù)模型和元數(shù)據(jù)模型,具體為氣象HBase數(shù)據(jù)庫(kù)表和元數(shù)據(jù)庫(kù)表。HBase表中的列簇可以包 含多個(gè)或一 個(gè)列[11-13]。
氣象HBase數(shù)據(jù)庫(kù)見(jiàn)表1。
氣象用戶查詢統(tǒng)計(jì)一般都由時(shí)間和站點(diǎn)為條件查詢,站點(diǎn)和時(shí)間的組合型為唯一值,故將其作為Row key便于查詢,當(dāng)Hive和HBase整合后,查詢時(shí)間較單一的Hive查詢或者HBase查詢時(shí)間長(zhǎng)很多,但將attribute做為Row key查詢時(shí)間會(huì)明顯變短[13]。
元數(shù)據(jù)庫(kù)表見(jiàn)表2。
表1 氣象HBase數(shù)據(jù)庫(kù)
表2 元數(shù)據(jù)庫(kù)
元數(shù)據(jù)庫(kù)表主要實(shí)現(xiàn)氣象數(shù)據(jù)HBase數(shù)據(jù)庫(kù)表和Oracle數(shù)據(jù)庫(kù)表屬性的管理,通過(guò)對(duì)元數(shù)據(jù)庫(kù)表的操作實(shí)現(xiàn)對(duì)應(yīng)氣象數(shù)據(jù)庫(kù)表屬性的映射管理。
2.1.1 關(guān)系數(shù)據(jù)庫(kù)氣象數(shù)據(jù)信息表
本文實(shí)驗(yàn)采用的數(shù)據(jù)為地面氣象資料,其中包括站點(diǎn)、日期、日平均溫度、日平均濕度、日平均水汽壓、日大氣壓、日最高氣溫和日最低氣溫8個(gè)屬性,見(jiàn)表3。其中將站點(diǎn)和日期合并為attribute,具有唯一性,設(shè)計(jì)為主鍵。
表3 氣象數(shù)據(jù)信息
2.1.2 HBase數(shù)據(jù)庫(kù)表
如表4所示,其中AT 為avg _temperature (平均氣溫),MAXT 為max_temperature (最大氣溫),MINT 為min_temperature (最小氣溫),AVP 為avg_water_vapor_pressure (平均水汽壓),AP為atmospheric_pressure(氣壓),AH 為avg_h(yuǎn)umity(平均濕度)。
表4 HBase數(shù)據(jù)庫(kù)
attribute作為數(shù)據(jù)庫(kù)表的Row key;Timestamp 為時(shí)間戳,其類(lèi)型為64 位整型,此處時(shí)間戳由寫(xiě)入HBase 時(shí)HBase自動(dòng)賦值,是可精確到毫秒的當(dāng)前系統(tǒng)時(shí)間。temperature、pressure、humity 為3個(gè)列簇。每個(gè)列簇下又包括幾 列,temperature 包 括AT、MAXT、MINT 三 列。pressure包括AVP、AP 兩列。humity 只包括AH 一列。
2.2.1 云存儲(chǔ)平臺(tái)實(shí)驗(yàn)結(jié)果分析
為了驗(yàn)證上面的結(jié)果,使用4臺(tái)PC機(jī)搭建了環(huán)境,系統(tǒng)配置見(jiàn)表5、表6。各臺(tái)PC 機(jī)之間用百兆以太網(wǎng)卡,通過(guò)交換機(jī)連接。PC1 運(yùn)行master即NameNode、Hmaster,PC2、PC3 運(yùn) 行DataNode1 和DataNode2,HRegionServer1,HRegionServer2,PC4運(yùn)行云存儲(chǔ)服務(wù)系統(tǒng),包括關(guān)系數(shù)據(jù)庫(kù)和服務(wù)器。
表5 硬件參數(shù)信息
表6 軟件參數(shù)信息
實(shí)驗(yàn)所使用的數(shù)據(jù)為地面195 個(gè)站點(diǎn)從1951 到2011年所采集的氣象數(shù)據(jù),實(shí)驗(yàn)中截取了1.3G,2.5G,5G,8G,10G,13G,25G 等7個(gè)大小不同的數(shù)據(jù)集。
評(píng)價(jià)指標(biāo)選用系統(tǒng)響應(yīng)時(shí)間,是指從客戶端向存儲(chǔ)模型發(fā)出查詢和下載數(shù)據(jù)集命令開(kāi)始,存儲(chǔ)模型進(jìn)行數(shù)據(jù)操作,將結(jié)果反饋給客戶的整個(gè)時(shí)間,單位為秒。設(shè)計(jì)了4種實(shí)驗(yàn)方案,分別是:①查詢1條數(shù)據(jù);②查詢1 000 000條數(shù)據(jù);③查詢統(tǒng)計(jì)1 000 000條數(shù)據(jù);④查詢下載1 000 000條數(shù)據(jù)。
由圖3 (a)和圖3 (b)可以看出,在進(jìn)行數(shù)據(jù)查詢時(shí),當(dāng)數(shù)據(jù)集大于5G 時(shí),系統(tǒng)響應(yīng)時(shí)間明顯下降;由圖3 (c)可以看出,在進(jìn)行數(shù)據(jù)查詢統(tǒng)計(jì)時(shí),當(dāng)數(shù)據(jù)集大于8G 時(shí),系統(tǒng)響應(yīng)時(shí)間增幅明顯減少;由圖3 (d)可以看出,在進(jìn)行查詢下載時(shí),當(dāng)數(shù)據(jù)集大于8G時(shí),系統(tǒng)響應(yīng)時(shí)間明顯減少。由此可以得出結(jié)論,系統(tǒng)在處理大數(shù)據(jù)集時(shí)優(yōu)勢(shì)明顯。
圖3 實(shí)驗(yàn)結(jié)果
2.2.2 ARIMA 算法預(yù)測(cè)結(jié)果分析
(1)數(shù)據(jù)序列建模
課題選用內(nèi)蒙古氣象局某站點(diǎn)過(guò)去10年的日平均水氣壓和日平均相對(duì)濕度數(shù)據(jù)進(jìn)行預(yù)測(cè)實(shí)驗(yàn),預(yù)測(cè)未來(lái)15天的數(shù)據(jù),根據(jù)課題選用的ARIMA 算法進(jìn)行預(yù)測(cè)。過(guò)程如下:
1)數(shù)據(jù)預(yù)處理。數(shù)據(jù)中有 “32766”類(lèi)數(shù)據(jù),將該類(lèi)數(shù)據(jù)用前一天與后一天的平均值代替。
2)進(jìn)行零變換處理,形成新序列。
3)進(jìn)行平穩(wěn)性檢驗(yàn),經(jīng)MATLAB 的相關(guān)函數(shù) [H,PValue,TestStat,CriticalValue]=dfARDTest(zero)檢驗(yàn),H 返回值不為零時(shí),為不平穩(wěn)序列;H 返回值為零時(shí),為平穩(wěn)序列,無(wú)需進(jìn)行差分處理。
4)分別計(jì)算序列自相關(guān)系數(shù)和偏自相關(guān)系數(shù),根據(jù)其進(jìn)行模型選擇和初步定階。
5)經(jīng)AIC準(zhǔn)則定階,確定最終模型,日平均水氣壓序列的模型為ARMA (2,2),日平均相對(duì)濕度序列的模型為ARMA (4,3)。
6)參數(shù)估計(jì),即計(jì)算yt=1yt-1+…+pyt-p+εtθ1εt-1-θqεt-q中1…p 和θ1…θq。
(2)預(yù)測(cè)結(jié)果
經(jīng)以上步驟,日平均水汽壓的最終模型為ARIMA (2,1,2),日平均相對(duì)濕度的最終模型為ARIMA (4,0,3),利用這2個(gè)模型對(duì)未來(lái)15天的日平均水汽壓和日平均相對(duì)濕度進(jìn)行了預(yù)測(cè),其預(yù)測(cè)結(jié)果與真實(shí)數(shù)據(jù)的對(duì)比如圖4和圖5所示。
圖4 平均水汽壓預(yù)測(cè)值與真實(shí)值對(duì)比
圖5 平均相對(duì)濕度預(yù)測(cè)值與真實(shí)值對(duì)比
(3)結(jié)果分析
從直觀分析兩個(gè)序列隨著預(yù)測(cè)步長(zhǎng)的增加,預(yù)測(cè)效果越來(lái)越差。經(jīng)課題選用評(píng)價(jià)指標(biāo)進(jìn)行精確分析,其結(jié)果見(jiàn)表7和表8。
表7 日平均水汽壓誤差
表8 日平均相對(duì)濕度誤差
由MAE列和MAPE 列知,隨著預(yù)測(cè)步長(zhǎng)的增加,日平均水汽壓預(yù)測(cè)誤差和日平均相對(duì)濕度預(yù)測(cè)誤差基本成越來(lái)越大的增長(zhǎng)趨勢(shì),說(shuō)明該算法和模型在多步預(yù)測(cè)上存在一定缺陷,需要做進(jìn)一步改進(jìn)。
本文對(duì)基于氣象應(yīng)用的私有云存儲(chǔ)進(jìn)行了設(shè)計(jì)和開(kāi)發(fā),以Hadoop分布式框架為基礎(chǔ),在分布式文件系統(tǒng)HDFS的基礎(chǔ)上結(jié)合分布式數(shù)據(jù)庫(kù)HBase、數(shù)據(jù)倉(cāng)庫(kù)管理工具Hive、分布式數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)遷移工具Sqoop等工具在普通廉價(jià)的計(jì)算機(jī)集群上搭建和開(kāi)發(fā)了該私有云存儲(chǔ)平臺(tái),實(shí)現(xiàn)了氣象數(shù)據(jù)海量存儲(chǔ)、快速插入和高效查詢下載以及被探測(cè)氣象屬性管理等功能。經(jīng)平臺(tái)實(shí)驗(yàn)表明,該平臺(tái)具有良好的易擴(kuò)展性、易維護(hù)性和對(duì)海量氣象數(shù)據(jù)的高效數(shù)據(jù)管理特性。
目前該氣象私有云存儲(chǔ)平臺(tái)基本完成預(yù)期目標(biāo)但是比較粗糙并且仍在研究中,可以在此基礎(chǔ)上繼續(xù)完善,目前存儲(chǔ)的氣象數(shù)據(jù)還未包括氣象云圖、衛(wèi)星云圖等的非結(jié)構(gòu)數(shù)據(jù),并且氣象數(shù)據(jù)十分寶貴,它的安全性十分重要,系統(tǒng)還需在其安全性等方面進(jìn)行研究。
[1]DOU Yiwen,LU Li,LIU Xulin,et al.Meteorological data storage and management system [J].Computer Systems&Applications,2011,20 (7):116-120 (in Chinese). [竇以文,盧俐,劉旭林,等.氣象數(shù)據(jù)存貯管理系統(tǒng) [J].計(jì)算機(jī)系統(tǒng)
應(yīng)用,2011,20 (7):116-120.]
[2]SHEN Wenhai.The future trend of information from cloud computing meteorological department[J].Advances in Meteorological Science and Technology,2012 (2):4-9(in Chinese).[沈文海.從云計(jì)算看氣象部門(mén)未來(lái)的信息化趨勢(shì) [J].氣象科技進(jìn)展,2012 (2):4-9.]
[3]CUI Jie,LI Taoshen,LAN Hongxing.Design and development of the mass data storage platform based on Hadoop [J].Journal of Computer Research and Development,2012 (S1):12-18 (in Chinese). [崔杰,李陶深,蘭紅星.基于Hadoop的海量數(shù)據(jù)存儲(chǔ)平臺(tái)設(shè)計(jì)與開(kāi)發(fā) [J].計(jì)算機(jī)研究與發(fā)展,2012 (S1):12-18.]
[4]ZHOU Ke,WANG Hua,LI Chunhua.Cloud storage technology and its application [J].ZTE Communications,2010,16(4):24-27 (in Chinese). [周可,王樺,李春花.云存儲(chǔ)技術(shù)及其應(yīng)用 [J].中興通訊術(shù),2010,16 (4):24-27.]
[5]Frank Doelitzscher,Anthony Sulistio,Christoph Reich,et al.Private cloud for collaboration and e-learning services:From IaaS to SaaS [J].Computing,2011,91 (1):23-42.
[6]Chang F,Dean J,Ghemawat S,et al.Bigtable:A distributed storage system for structured data [C]//Proc of the 7th USENIX Symp on Operating Systems Design and Implementation,2006:205-218.
[7]ZHANG Chunming,RUI Jianwu,HE Tingting.An approach for storing and accessing small files on Hadoop [J].Computer Applications and Software,2012,29 (11):95-100 (in Chinese).[張春明,芮建武,何婷婷.一種Hadoop小文件存儲(chǔ)和讀取的方法 [J].計(jì)算機(jī)應(yīng)用與軟件,2012,29 (11):95-100.]
[8]ZHANG Jianxun,GU Zhimin,ZHENG Chao.Survey of research progress on cloud computing [J].Application Research of Computers,2010,27 (2):429-433 (in Chinese). [張建勛,古志民,鄭超.云計(jì)算研究進(jìn)展綜述 [J].計(jì)算機(jī)應(yīng)用研究,2010,27 (2):429-433.]
[9]YANG Zhihao,ZHAO Taiyin,YAO Xingmiao,et al.Private cloud computing system realization method adaptable to data and computing intensive tasks [J].Application Research of Computers,2011,28 (2):621-624 (in Chinese). [楊志豪,趙太銀,姚興苗,等.一種適應(yīng)數(shù)據(jù)與計(jì)算密集型任務(wù)的私有云系統(tǒng) 實(shí) 現(xiàn) 研 究 [J].計(jì) 算 機(jī) 應(yīng) 用 研 究,2011,28 (2):621-624.]
[10]ZHANG Di,ZHU Ligu,HOU Zhenyu,et al.Research of cloud storage technology for mobile terminal based on web[J].Computer Engineering and Applications,2010,46(36):66-69 (in Chinese).[張迪,朱立谷,侯振宇,等.基于Web的移動(dòng)端云存儲(chǔ)技術(shù)研究 [J].計(jì)算機(jī)工程與應(yīng)用,2010,46 (36):66-69.]
[11]LIU Jinzhi,YU Dan,ZHU Shuaishuai.Research on new cloud storage service model [J].Application Research of Computers,2011,28 (5):1869-1872 (in Chinese).[劉金芝,余丹,朱率率.一種新的云存儲(chǔ)服務(wù)模型研究 [J].計(jì)算機(jī)應(yīng)用研究,2011,28 (5):1869-1872.]
[12]LI Chao,ZHANG Mingbo,XING Chunxiao,et al.Survey and review on key technologies of column oriented database systems[J].Computer Science,2010,37 (12):1-8 (in Chinese).[李超,張明博,邢春曉,等.列存儲(chǔ)數(shù)據(jù)庫(kù)關(guān)鍵技術(shù)綜述 [J].計(jì)算機(jī)科學(xué).2010,37 (12):1-8.]
[13]Abadi D J.Query execution in column oriented database systems[C]//SIGMOD,2008:145-148.
[14]CHEN Kang,ZHENG Weimin.Cloud computing:System instances and current research[J].Journal of Software,2009,20(5):1337-1348(in Chinese).[陳康,鄭偉民.云計(jì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報(bào),2009,20 (5):1337-1348.]