丁薇+譚向宇+彭晶+黃緒勇+聶鼎+程旭明+胡勇
隨著科學(xué)技術(shù)的不斷提高,人們不只是依靠傳統(tǒng)的氣象監(jiān)測(cè)方式,而是不斷的進(jìn)行科技革新,監(jiān)測(cè)的方式越加豐富起來(lái)。而問(wèn)題也隨之而來(lái),氣象數(shù)據(jù)涉及的方面廣闊,數(shù)據(jù)多維化,結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)成上升趨勢(shì),使得氣象數(shù)據(jù)的存儲(chǔ)面臨難題。
將數(shù)據(jù)庫(kù)技術(shù)應(yīng)用于包含海量數(shù)據(jù)的氣象數(shù)據(jù)上,雖然可以大大提高數(shù)據(jù)檢索能力和服務(wù)效率,但是對(duì)于海量數(shù)據(jù)分析是遠(yuǎn)遠(yuǎn)不夠的,其涉及到的數(shù)據(jù)是多維化的,想要從這些看似簡(jiǎn)單,實(shí)際卻很復(fù)雜的數(shù)據(jù)中分析有用數(shù)據(jù)是很困難的。
而數(shù)據(jù)倉(cāng)庫(kù)的出現(xiàn)可以很好的解決氣象數(shù)據(jù)的數(shù)據(jù)量巨大,且數(shù)據(jù)多維化的問(wèn)題。
1 氣象數(shù)據(jù)倉(cāng)庫(kù)
1.1 體系結(jié)構(gòu)
本文的數(shù)據(jù)倉(cāng)庫(kù)的建立是基于Hadoop+Jstorm+zookeeper三者的結(jié)合構(gòu)建的分布式計(jì)算環(huán)境上的,最終數(shù)據(jù)存放于Hbase中,使用Map Reduce對(duì)電力大數(shù)據(jù)進(jìn)行分布式計(jì)算和處理。高效快速的對(duì)實(shí)時(shí)數(shù)據(jù)處理反饋,海量數(shù)據(jù)存儲(chǔ)。
同時(shí)將各個(gè)監(jiān)測(cè)設(shè)備終端和監(jiān)測(cè)屬性點(diǎn)存放于Oracle數(shù)據(jù)庫(kù)中。各個(gè)設(shè)備終端之間的關(guān)系如下:一臺(tái)設(shè)備上可以掛載多個(gè)監(jiān)測(cè)終端于其上,一個(gè)監(jiān)測(cè)終端又按監(jiān)測(cè)的種類不同分為多個(gè)監(jiān)測(cè)主題實(shí)例,每個(gè)主題實(shí)例對(duì)應(yīng)這一個(gè)監(jiān)測(cè)類型(縣級(jí)站點(diǎn)氣象實(shí)時(shí)數(shù)據(jù)、鄉(xiāng)鎮(zhèn)站點(diǎn)氣象實(shí)時(shí)數(shù)據(jù)等),每一種監(jiān)測(cè)類型下有對(duì)應(yīng)這多個(gè)監(jiān)測(cè)屬性(雨量、實(shí)時(shí)溫度、濕度等)。
將采集到的實(shí)時(shí)數(shù)據(jù)存放于Hbase,非實(shí)時(shí)數(shù)據(jù)存放于Oracle,兩者即互不相干,有密不可分。Hbase數(shù)據(jù)的寫入,依賴于實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)。
1.2 數(shù)據(jù)來(lái)源
本次研究的數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的數(shù)據(jù)來(lái)源是從地方局中調(diào)取的數(shù)據(jù),其以文件格式存儲(chǔ)于遠(yuǎn)程ftp服務(wù)器上。故數(shù)據(jù)要想進(jìn)入到Hbase中,需要程序解析后塞入消息隊(duì)列中,然后在存至Hbase。
為了預(yù)測(cè)的準(zhǔn)確和詳細(xì),需要進(jìn)行多個(gè)天氣指標(biāo)值:溫度(℃)、雨量(mm)、風(fēng)速(m/s)、風(fēng)向、氣壓等,還要根據(jù)氣象衛(wèi)星傳遞回來(lái)的數(shù)據(jù)進(jìn)行分析整合。
在數(shù)據(jù)存放Hbase前,設(shè)計(jì)合理的rowkey可以大大的提高數(shù)據(jù)的檢索能力,提高Hadoop集群的性能。
本此研究同樣設(shè)計(jì)了一套簡(jiǎn)單而有效的rowkey策略:以主題實(shí)例+監(jiān)測(cè)屬性+采集時(shí)間三者拼接組合成rowkey。這樣設(shè)計(jì)的原因是:1)主題實(shí)例是唯一存在的,一個(gè)主題只對(duì)應(yīng)著一個(gè)終端,而一個(gè)終端也只對(duì)應(yīng)著一個(gè)設(shè)備,以主題實(shí)例為首,就能確定屬性的唯一;2)主題與類型是多對(duì)一的關(guān)系,一個(gè)主題對(duì)應(yīng)著一個(gè)類型;而類型與屬性是是一對(duì)多的關(guān)系,這樣設(shè)計(jì)就能知道,是哪個(gè)主題下那個(gè)屬性的監(jiān)測(cè)信息了;3)采集時(shí)間,因?yàn)閿?shù)據(jù)采集是分時(shí)間段的,每隔一段時(shí)間就要進(jìn)行數(shù)據(jù)的采集,為確保數(shù)據(jù)的實(shí)時(shí)性,所以添加了采集時(shí)間。這樣就確保了監(jiān)測(cè)終端在某個(gè)時(shí)間點(diǎn)采集到了某個(gè)監(jiān)測(cè)屬性的值。
圖2即是rowkey的最終效果展示:由圖可以知道:主題實(shí)例10000000000001790977在2016年11月4日6時(shí)30分的時(shí)候的10076屬性(天氣情況)為小雨,而在8時(shí)53分為陣雨。通過(guò)主題實(shí)例亦可以反向拿到監(jiān)測(cè)終端為:“10*10氣象網(wǎng)格19176”。
數(shù)據(jù)從不同的監(jiān)測(cè)系統(tǒng)中到來(lái),經(jīng)過(guò)解析后,按照固定的格式存儲(chǔ),既保證了數(shù)據(jù)的規(guī)范化處理,又能達(dá)到數(shù)據(jù)因果查詢效果。拿到一個(gè)設(shè)備可以通過(guò)設(shè)備與監(jiān)測(cè)終端的關(guān)系獲取到終端信息,再以終端和主題實(shí)例的關(guān)系獲取到主題實(shí)例信息,然后再以主題實(shí)例與實(shí)例類別,就能抽取到主題的監(jiān)測(cè)屬性信息,最后就可以根據(jù)這些信息,去查詢指定時(shí)間采集到的數(shù)據(jù)值了:get ‘THEME_PARAM_VAUE,100000000000016833731009920160706000000?;蛘卟樵円惶熘畠?nèi)采集到的所有數(shù)據(jù)值:scan ‘THEME_PARAM_VALUE,{STARTROW=>1000000000016833731009920160706074800,STOPROW=>000000000016833731009920160707000000}。
2 流數(shù)據(jù)的處理
氣象數(shù)據(jù)也是一種流式數(shù)據(jù),監(jiān)測(cè)設(shè)備按照一定的頻率,長(zhǎng)期的采集監(jiān)測(cè)點(diǎn)的數(shù)據(jù),通過(guò)網(wǎng)絡(luò)實(shí)時(shí)的提交給服務(wù)器。所以可以把它看作一種流數(shù)據(jù)。
針對(duì)于流數(shù)據(jù),我們?cè)诮ㄔO(shè)分布式計(jì)算環(huán)境的時(shí)候就已經(jīng)接入Jstorm流式計(jì)算框架。它能夠簡(jiǎn)單可靠的處理實(shí)時(shí)的數(shù)據(jù)流,采用批處理方式實(shí)時(shí)處理,在極端時(shí)間內(nèi)得到結(jié)果反饋。
外部流式數(shù)據(jù)流入Spout中,然后將數(shù)據(jù)以tuple作為基本單元傳遞給Bolt處理單元,然后再將經(jīng)過(guò)處理后的數(shù)據(jù)到下一個(gè)處理單元對(duì)數(shù)據(jù)加工處理,直到最后一個(gè)處理單元處理完成,才能算完成一次Topology,在這個(gè)處理和傳遞數(shù)據(jù)的過(guò)程中,走的都是批處理方式,高效快速的對(duì)流數(shù)據(jù)進(jìn)行計(jì)算處理,達(dá)到實(shí)時(shí)的反饋[1]。
氣象數(shù)據(jù)的后期利用也是很大的,雖然上一刻的天氣已經(jīng)處于過(guò)去時(shí)了,但是其依然還有利用價(jià)值,比如:氣象預(yù)測(cè)的時(shí)候,你得有一個(gè)事物作為參照,才能根據(jù)公式、程序得出想要的結(jié)果。
所以對(duì)于氣象數(shù)據(jù)的存儲(chǔ),不管是過(guò)去,還是現(xiàn)在的數(shù)據(jù)都非常重要,不能輕易的做刪除操作,而在Hbase中如果數(shù)據(jù)列有問(wèn)題,可以通過(guò)rowkey更新覆蓋,這有一個(gè)好處:Hbase會(huì)自動(dòng)記錄版本號(hào),舊的版本不是物理上的刪除,而是不直接顯示,每次只顯示最新版本的數(shù)據(jù)。
3 結(jié)論
以上就是對(duì)氣象數(shù)據(jù)倉(cāng)庫(kù)在數(shù)據(jù)存儲(chǔ)方面的研究,建立合理的rowkey策略,保證數(shù)據(jù)的唯一性、可使用性,以簡(jiǎn)單的方式存儲(chǔ)具有重要價(jià)值的數(shù)據(jù)。使用Jstorm對(duì)氣象數(shù)據(jù)進(jìn)行處理和存儲(chǔ),極大的提高了數(shù)據(jù)處理能力,無(wú)限的接近于實(shí)時(shí)反饋。
參考文獻(xiàn)
[1]楊鵬.面向流式數(shù)據(jù)處理平臺(tái)JStorm的負(fù)載均衡技術(shù)研究[J].北京:北京工業(yè)大學(xué),2016.endprint