摘 要:隨著電力氣象相關(guān)系統(tǒng)規(guī)模的不斷擴(kuò)大,數(shù)據(jù)存儲(chǔ)管理變得越來(lái)越復(fù)雜,傳統(tǒng)的單服務(wù)器數(shù)據(jù)存儲(chǔ)方式已經(jīng)無(wú)法滿(mǎn)足管理者和用戶(hù)對(duì)系統(tǒng)高可用性、高可靠性的需求,因此,提出一種新型的數(shù)據(jù)存儲(chǔ)優(yōu)化方案變得十分必要。
關(guān)鍵詞:大數(shù)據(jù)Hadoop平臺(tái)數(shù)據(jù)存儲(chǔ);存儲(chǔ)優(yōu)化方案;電力氣象
中圖分類(lèi)號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2018)01-0155-04
An Optimization Scheme for Data Storage of Power Meteorological System
GAO Yang1,LI Zhe1,YUAN Sikun1,SHANG Bingbing1,ZHANG Xiaofei2
(1.Henan EPRI Hi Tech Group Co.,Ltd.,Zhengzhou 450052,China;2.Henan Electric Power Company of State Network Power Science Research Institute,Zhengzhou 450052,China)
Abstract:With the development of power system related meteorological scale expanding,data storage management becomes more and more complicated,the traditional single server data storage has been unable to meet the managers and users,the demand for high reliability,the system can therefore become very necessary to put forward a new data storage optimization scheme.
Keywords:big data Hadoop platform data storage;storage optimization scheme; power weather
1 背景分析
近年來(lái),隨著電子計(jì)算機(jī)和物聯(lián)網(wǎng)的迅速發(fā)展,我國(guó)電網(wǎng)建設(shè)進(jìn)入了以特高壓和智能電網(wǎng)為特征的全新發(fā)展階段,日益擴(kuò)大的電網(wǎng)規(guī)模,不斷增加的電網(wǎng)容量、日趨復(fù)雜的電網(wǎng)結(jié)構(gòu)、逐漸增大的地理跨度,使電網(wǎng)生產(chǎn)遭受惡劣氣象條件和天氣現(xiàn)象的影響程度和影響強(qiáng)度也隨之增加。總體來(lái)看,近些年我國(guó)50%以上的輸電線路故障是由于惡劣天氣導(dǎo)致,如果電網(wǎng)運(yùn)檢、運(yùn)維決策人員可以提前得到強(qiáng)對(duì)流預(yù)警信息,對(duì)易受災(zāi)害線路進(jìn)行防范控制,就可以有效地減少氣象災(zāi)害對(duì)電網(wǎng)的破壞。因此,研究氣象預(yù)警,尤其是極端天氣對(duì)電網(wǎng)輸電線路影響有著十分重大的意義,電力氣象相關(guān)系統(tǒng)應(yīng)運(yùn)而生,其中包括電力氣象預(yù)警系統(tǒng)、架空輸電線智能預(yù)警系統(tǒng)、舞動(dòng)預(yù)警中心系統(tǒng)等。
隨著這些系統(tǒng)規(guī)模的不斷擴(kuò)大,隨之而來(lái)大規(guī)模電力數(shù)據(jù)、氣象數(shù)據(jù)及日志數(shù)據(jù)等數(shù)據(jù)構(gòu)成了“電力氣象大數(shù)據(jù)”。這些極速涌現(xiàn)的數(shù)據(jù)有著極高的價(jià)值,卻也給系統(tǒng)數(shù)據(jù)存儲(chǔ)設(shè)計(jì)帶來(lái)了挑戰(zhàn)。當(dāng)前,傳統(tǒng)的單服務(wù)器數(shù)據(jù)存儲(chǔ)方式已經(jīng)無(wú)法滿(mǎn)足用戶(hù)和管理者對(duì)系統(tǒng)高可用性、高可靠性的需求。多個(gè)獨(dú)立且各不相同的歸檔系統(tǒng),使維護(hù)和管理任務(wù)大大的增加。因此,提出一種新型的電力氣象數(shù)據(jù)存儲(chǔ)優(yōu)化方案就變得十分必要。
2 系統(tǒng)數(shù)據(jù)存儲(chǔ)存在的問(wèn)題
為了描述方便,以下將電力氣象相關(guān)系統(tǒng)數(shù)據(jù)統(tǒng)稱(chēng)為電力氣象數(shù)據(jù)。電力氣象數(shù)據(jù)按照組織方式可以分為兩種。第一種存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中,主要是結(jié)構(gòu)化的關(guān)系數(shù)據(jù)以及以blog方式存儲(chǔ)的大字段數(shù)據(jù);第二類(lèi)數(shù)據(jù)存儲(chǔ)在磁盤(pán)文件系統(tǒng)中,主要是從第三方組織(系統(tǒng))采集(提取)的原始數(shù)據(jù)文件以及計(jì)算服務(wù)生成的非結(jié)構(gòu)化數(shù)據(jù)文件。以上兩類(lèi)數(shù)據(jù)都存在以下問(wèn)題:
2.1 空間擴(kuò)展性較差。
電力氣象相關(guān)系統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)倉(cāng)庫(kù)是由Oracle實(shí)例來(lái)執(zhí)行的,由于這些數(shù)據(jù)庫(kù)服務(wù)器都是單獨(dú)存放的,一旦表空間不足,只有通過(guò)添加硬盤(pán)或更換服務(wù)器的方式對(duì)表空間進(jìn)行擴(kuò)容。這種擴(kuò)展方式不僅價(jià)格昂貴,需要將原有數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行備份和數(shù)據(jù)同步,時(shí)間成本、安全成本和人工成本都比較高,且無(wú)法保證保證系統(tǒng)正常運(yùn)行。
2.2 數(shù)據(jù)讀取性能問(wèn)題。
一方面,由于當(dāng)前幾乎所有非結(jié)構(gòu)化數(shù)據(jù)均存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中,許多氣象產(chǎn)品如精細(xì)化數(shù)值預(yù)報(bào)數(shù)據(jù)由于數(shù)據(jù)規(guī)模過(guò)大(通常達(dá)到上億數(shù)據(jù)量),即使通過(guò)添加索引、分表和分區(qū)等方法也幾乎無(wú)法做到數(shù)據(jù)的快速存儲(chǔ)和讀取。另一方面,傳統(tǒng)的Oracle數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)事務(wù)一致性都有要求,滿(mǎn)足這種一致性要求是以降低部分?jǐn)?shù)據(jù)庫(kù)讀取性能為代價(jià)的,而在電力氣象數(shù)據(jù)挖掘和分析過(guò)程中,不需要數(shù)據(jù)庫(kù)事務(wù)特征和對(duì)讀一致性的嚴(yán)格要求。
2.3 數(shù)據(jù)安全性無(wú)法得到保障
由于數(shù)據(jù)庫(kù)服務(wù)器和文件服務(wù)器都是單獨(dú)存放的,一旦服務(wù)器出現(xiàn)宕機(jī)等故障,系統(tǒng)數(shù)據(jù)就面臨丟失的風(fēng)險(xiǎn)。其次,數(shù)據(jù)庫(kù)一旦出現(xiàn)故障,一般必須由專(zhuān)門(mén)的DBA進(jìn)行數(shù)據(jù)恢復(fù),一旦操作人員有錯(cuò)誤操作,數(shù)據(jù)就有無(wú)法恢復(fù)的風(fēng)險(xiǎn)。
3 系統(tǒng)數(shù)據(jù)優(yōu)化方案
分布式存儲(chǔ)平臺(tái)的提出尤其是Hadoop存儲(chǔ)架構(gòu)的出現(xiàn)為電力氣象大數(shù)據(jù)存儲(chǔ)提供了即時(shí)可行解決方案,同時(shí)也為大數(shù)據(jù)分析、挖掘提供了有效便捷的方式。
依據(jù)Hadoop平臺(tái)存儲(chǔ)規(guī)范,對(duì)于結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)采用不同的解決策略。存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù),根據(jù)數(shù)據(jù)表大小與使用場(chǎng)景進(jìn)行分類(lèi),如果數(shù)據(jù)表巨大或者表數(shù)據(jù)需進(jìn)行進(jìn)一步的挖掘分析,則將數(shù)據(jù)遷移存儲(chǔ)在基于Hadoop的Hbase數(shù)據(jù)庫(kù)中進(jìn)行存儲(chǔ),而對(duì)于數(shù)據(jù)量不大或強(qiáng)業(yè)務(wù)關(guān)系表數(shù)據(jù)則保持現(xiàn)有Oracle數(shù)據(jù)庫(kù)存儲(chǔ)方式進(jìn)行存儲(chǔ)。
利用關(guān)系型數(shù)據(jù)庫(kù)對(duì)于復(fù)雜查詢(xún)和事務(wù)支持的特點(diǎn)與非關(guān)系型數(shù)據(jù)庫(kù)的高性能和高可擴(kuò)展性特點(diǎn)相結(jié)合存儲(chǔ)的方式不僅滿(mǎn)足了系統(tǒng)業(yè)務(wù)的需求,同時(shí)也滿(mǎn)足了數(shù)據(jù)管理者對(duì)數(shù)據(jù)挖掘、分析和快速存取的需求。對(duì)于非結(jié)構(gòu)化數(shù)據(jù)則直接存儲(chǔ)在基于Hadoop平臺(tái)的分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)。下圖為預(yù)設(shè)的數(shù)據(jù)存儲(chǔ)流程,其中虛線框內(nèi)的部分為大數(shù)據(jù)平臺(tái)的功能模塊,如圖1所示。
3.1 結(jié)構(gòu)化數(shù)據(jù)優(yōu)化方案
3.1.1 數(shù)據(jù)現(xiàn)狀
在Oracle數(shù)據(jù)庫(kù)中,我們將每年增長(zhǎng)500萬(wàn)條記錄以下的數(shù)據(jù)表稱(chēng)為一般表數(shù)據(jù),反之,對(duì)于每年增長(zhǎng)500萬(wàn)以上條記錄的數(shù)據(jù)稱(chēng)為大巨量表數(shù)據(jù)。對(duì)于一般表數(shù)據(jù),由于其大小總量有限,因此可以繼續(xù)存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中。大巨量表數(shù)據(jù),大致包含氣象雷達(dá)和自動(dòng)站數(shù)據(jù)、精細(xì)化數(shù)值預(yù)報(bào)數(shù)據(jù),以上幾類(lèi)數(shù)據(jù)擁有以下幾種主要特征:
(1)從外部系統(tǒng)(組織)獲取原始數(shù)據(jù)文件,傳輸至電網(wǎng)安全I(xiàn)II區(qū)進(jìn)行數(shù)據(jù)解析,并轉(zhuǎn)存到Oracle數(shù)據(jù)庫(kù)表中。所以,既有原始數(shù)據(jù)文件,同時(shí)又有對(duì)應(yīng)的關(guān)系數(shù)據(jù)表。
(2)數(shù)據(jù)規(guī)模龐大并持續(xù)增長(zhǎng),對(duì)失效數(shù)據(jù)的周期沒(méi)有明確的依據(jù)和標(biāo)準(zhǔn),因而不能清除舊數(shù)據(jù)或者轉(zhuǎn)移舊數(shù)據(jù)。
(3)實(shí)時(shí)訪問(wèn)性要求較高且每批次需讀取的數(shù)據(jù)記錄量較大。
(4)存儲(chǔ)在Oracle中的表數(shù)據(jù)獨(dú)立性較強(qiáng),與其他數(shù)據(jù)表的關(guān)聯(lián)查詢(xún)場(chǎng)景涉及較少。
(5)距離當(dāng)前時(shí)間最新批次的數(shù)據(jù)使用頻率較高,歷史數(shù)據(jù)使用頻率很低。
3.1.2 大表數(shù)據(jù)存儲(chǔ)與優(yōu)化方案
將以上各類(lèi)海量結(jié)構(gòu)化數(shù)據(jù),逐步從Oracle中遷移到HBase中,采用HBase數(shù)據(jù)表進(jìn)行存儲(chǔ)。在數(shù)據(jù)遷移過(guò)程中,對(duì)關(guān)系數(shù)據(jù)結(jié)構(gòu)進(jìn)行業(yè)務(wù)重構(gòu),剔除無(wú)效無(wú)用數(shù)據(jù)列或者進(jìn)行表的拆分處理。具體實(shí)施方案如下:
第一步,創(chuàng)建對(duì)應(yīng)的HBase命名空間、數(shù)據(jù)表。根據(jù)具體業(yè)務(wù)設(shè)計(jì)HBase行鍵(Rowkey),一般設(shè)計(jì)思路為站點(diǎn)編號(hào)+時(shí)間+屬性,如有特殊業(yè)務(wù)需求可以特殊設(shè)計(jì)。
第二步,升級(jí)電力氣象數(shù)據(jù)解析服務(wù),在將數(shù)據(jù)存儲(chǔ)到Oracle數(shù)據(jù)庫(kù)的基礎(chǔ)上,增加大數(shù)據(jù)存儲(chǔ)通道,按照HBase行健設(shè)計(jì)組織數(shù)據(jù),調(diào)用HBase存儲(chǔ)接口,將各類(lèi)數(shù)據(jù)實(shí)時(shí)寫(xiě)入HBase對(duì)應(yīng)表中。
第三步,編寫(xiě)Oracle歷史數(shù)據(jù)轉(zhuǎn)存HBase服務(wù)程序。確定升級(jí)時(shí)間點(diǎn),譬如定于2016-08-01啟用升級(jí)版的數(shù)據(jù)解析服務(wù),則將2016-08-01之前的歷史數(shù)據(jù)轉(zhuǎn)存到HBase中。
第四步,Oracle數(shù)據(jù)庫(kù)與HBase數(shù)據(jù)庫(kù)并行運(yùn)行一段時(shí)間,待HBase應(yīng)用成熟并穩(wěn)定下來(lái)后,Oracle庫(kù)只保留7天的歷史數(shù)據(jù),刪除7天之前的歷史數(shù)據(jù)。
3.2 非結(jié)構(gòu)化數(shù)據(jù)優(yōu)化方案
3.2.1 數(shù)據(jù)現(xiàn)狀
這里的非結(jié)構(gòu)化數(shù)據(jù),是相對(duì)于電力氣象Oracle中的數(shù)據(jù)而言,泛指存儲(chǔ)在磁盤(pán)文件系統(tǒng)中的數(shù)據(jù)文件,包括采集自第三方系統(tǒng)(組織)的原始數(shù)據(jù)文件、各類(lèi)氣象模型生成的中間結(jié)果數(shù)據(jù)文件和相關(guān)日志等。
電力氣象系統(tǒng)的前臺(tái)應(yīng)用,大部分都是基于Oracle中的結(jié)構(gòu)化數(shù)據(jù),與這些所謂的非結(jié)構(gòu)化數(shù)據(jù)文件關(guān)聯(lián)性較弱,僅僅涉及部分小體積的純文本文件、圖片(前臺(tái)展示)等;其他大部分?jǐn)?shù)據(jù)文件,在經(jīng)過(guò)初次的數(shù)據(jù)解析和計(jì)算加工后,都只是作為一種存儲(chǔ)策略保存在服務(wù)器指定磁盤(pán)目錄中。
這部分?jǐn)?shù)據(jù)普遍具有如下幾種特征:
(1)原始文件類(lèi)型繁多、內(nèi)容結(jié)構(gòu)復(fù)雜。
(2)文件體積較小,最大50MB左右。
(3)文件數(shù)量較多,一般按照時(shí)間順序遞增。
(4)文件按照業(yè)務(wù)類(lèi)型分目錄存儲(chǔ)。
3.2.2 存儲(chǔ)策略
對(duì)以上非結(jié)構(gòu)化文件的優(yōu)化處理,由于極少涉及讀寫(xiě)性能方面的要求,所以只是在存儲(chǔ)策略方面的優(yōu)化。可以將以上非結(jié)構(gòu)化文件轉(zhuǎn)存到基于Hadoop平臺(tái)的HDFS系統(tǒng)中,利用分布式文件系統(tǒng)的分布式存儲(chǔ)和多副本機(jī)制,確保數(shù)據(jù)文件的存儲(chǔ)安全。
另外,Hadoop官方并不建議在HDFS中存儲(chǔ)大量的小文件,因?yàn)檫@將占用更多的元數(shù)據(jù)存儲(chǔ)空間,而電力氣象的數(shù)據(jù)文件普遍比較小且數(shù)量多,所以必須在轉(zhuǎn)儲(chǔ)到HDFS系統(tǒng)之前進(jìn)行文件的合并或者打包處理。
3.2.3 設(shè)計(jì)方案
本章節(jié)我們將詳細(xì)講述如何構(gòu)建一個(gè)通用的“本地文件定時(shí)同步HDFS服務(wù)”,以便于將本地?cái)?shù)據(jù)文件導(dǎo)入到HDFS系統(tǒng)中,此服務(wù)具備以下幾大功能:
(1)HDFS文件瀏覽器。在操作界面和功能上類(lèi)似于windows的資源管理器,可實(shí)現(xiàn)創(chuàng)建目錄文件、文件重命名、刪除目錄文件、上傳本地目錄文件、下載HDFS文件、移動(dòng)HDFS文件、HDFS文件查看、HDFS目錄導(dǎo)航樹(shù)、HDFS目錄文件列表、HDFS文件屬性展示等操作。對(duì)于上傳下載較大體積的文件時(shí),必須有進(jìn)度提醒機(jī)制。
(2)可配置的本地文件定時(shí)同步到HDFS機(jī)制。利用定時(shí)輪詢(xún)機(jī)制,定時(shí)掃描本地目錄,將新文件上傳到HDFS系統(tǒng)中。可配置多個(gè)監(jiān)測(cè)掃描機(jī)制,之間互不干擾。
(3)HDFS目錄授權(quán)管理。基于linux系統(tǒng)的目錄文件權(quán)限分配機(jī)制,可進(jìn)行HDFS目錄所屬用戶(hù)、用戶(hù)組權(quán)限分配調(diào)整。
(4)系統(tǒng)安全管理。包括系統(tǒng)登錄驗(yàn)證、用戶(hù)角色功能分配等,以及HDFS文件瀏覽器根目錄的配置管理,譬如系統(tǒng)管理員的根目錄為HDFS根目錄,普通用戶(hù)的根目錄則為HDFS系統(tǒng)的某個(gè)子目錄。
3.2.4 目錄映射機(jī)制
圖2為“本地目錄與HDFS系統(tǒng)目錄之間的映射”示例圖,在原樣復(fù)制本地目錄結(jié)構(gòu)的基礎(chǔ)上,可以改變子目錄的層級(jí)結(jié)構(gòu)、重命名子目錄、目錄內(nèi)文件合并等特殊操作。至于目錄內(nèi)文件的重命名操作,目前暫時(shí)不考慮。
3.2.5 文件同步方案
為了避免重復(fù)上傳本地文件,在掃描時(shí)需要界定出那些是未上傳過(guò)的新文件,目前有兩種解決方案。
(1)方案一。本地文件上傳到HDFS后,刪除本地文件或者將其移動(dòng)到其他磁盤(pán)目錄中,這樣可保證服務(wù)每次掃描到的數(shù)據(jù)文件都是新文件。此種解決方案的優(yōu)點(diǎn)是可快速掃描出新文件,不需要維護(hù)MD5信息;缺點(diǎn)是需要?jiǎng)h除或者移動(dòng)原始文件。
(2)方案二。針對(duì)每個(gè)同步方案,構(gòu)建一個(gè)已上傳文件的MD5信息列表文件,文件名稱(chēng)為:同步方案編碼-md5.txt,譬如電力氣象基站原數(shù)據(jù)同步服務(wù)的MD5文件名稱(chēng)為sync-weather-data-md5.txt。系統(tǒng)啟動(dòng)時(shí),將每個(gè)同步方案的MD5信息加載到內(nèi)存中,掃描到本地文件時(shí),先獲取此文件的MD5信息,然后在MD5列表中檢查是否存在;如果不存在,說(shuō)明此文件沒(méi)有上傳過(guò),可視為新文件,則將其上傳到HDFS系統(tǒng)中,同時(shí)將MD5信息加入到MD5列表中;如果存在,則說(shuō)明此文件之前已經(jīng)上傳過(guò),可跳過(guò)繼續(xù)掃描其它文件。每次掃描結(jié)束后,將內(nèi)存中的MD5信息列表序列化到本地磁盤(pán)文件中。這種解決方案的優(yōu)點(diǎn)是無(wú)需刪除或移動(dòng)原始文件,不足是每次都需要掃描很多的文件,并且需要獲取文件的MD5信息,導(dǎo)致掃描和同步操作比較耗時(shí)。
(3)結(jié)論。選擇方案時(shí),需要考慮當(dāng)前系統(tǒng)剩余空間大小與是否可以刪除或移動(dòng)原始文件。由于電力氣象系統(tǒng)許多原始數(shù)據(jù)前臺(tái)仍需使用,且當(dāng)前服務(wù)器還有一定余量,因此選擇方案二。
4 結(jié) 論
本文給出了一個(gè)適合電力氣象大數(shù)據(jù)的存儲(chǔ)優(yōu)化解決方案,有效地保障了電力氣象系統(tǒng)的高可用性,同時(shí)提升了電力氣象數(shù)據(jù)存儲(chǔ)和管理便利性,為電力氣象數(shù)據(jù)挖掘分析提供了支持和保障。
參考文獻(xiàn):
[1] 陳超.大數(shù)據(jù)背景下電力行業(yè)數(shù)據(jù)應(yīng)用研究 [J].現(xiàn)代電子技術(shù),2013(24):8-11+14.
[2] 李皎.大數(shù)據(jù)時(shí)代到來(lái)對(duì)電力行業(yè)發(fā)展提出新要求 [J].華北電業(yè),2012(4):82-83.
[3] 衡星辰,周力.分布式技術(shù)在電力大數(shù)據(jù)高性能處理中的應(yīng)用 [J].電力信息與通信技術(shù),2013(9).
[4] 王淑祥.基于Hadoop的海量電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)分析平臺(tái)研究 [J].信息科技,2013(13):79-80.
作者簡(jiǎn)介:高陽(yáng)(1988.11-),男,漢族,河南洛陽(yáng)人,軟件設(shè)計(jì)師,工程師,學(xué)士。研究方向:電力信息化、軟件設(shè)計(jì);李哲(1981.11-),男,漢族,河南南陽(yáng)人,監(jiān)測(cè)分析師主任,高級(jí)工程師,學(xué)士。研究方向:電力信息化,電力氣象;苑司坤(1982.02-),男,漢族,河南商丘人,項(xiàng)目經(jīng)理、軟件設(shè)計(jì)師,工程師,學(xué)士。研究方向:電力信息化、軟件設(shè)計(jì);商兵兵(1981.06-),男,漢族,河南平頂山人,軟件工程師,工程師,學(xué)士。研究方向:電力信息化、大數(shù)據(jù);張小斐(1976.07-),男,漢族,河南南陽(yáng)人,狀態(tài)信息室主任,高級(jí)工程師,雙學(xué)士。研究方向:電力信息化、大數(shù)據(jù)。