王 軍1,,韓林峰1,侯 賓2
?。?.河南許繼儀表有限公司, 河南 許昌 461000,;2. 北京郵電大學(xué) 電子工程學(xué)院, 北京 100876)
摘 要: 電力系統(tǒng)的用采數(shù)據(jù)具有結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量龐大和增量迅速等典型大數(shù)據(jù)特點,,關(guān)系型數(shù)據(jù)庫將無法應(yīng)對其未來發(fā)展,。基于Hadoop和關(guān)系型數(shù)據(jù)庫混合構(gòu)架,,提出新型用采數(shù)據(jù)服務(wù)架構(gòu),。對平臺的高可用性,、系統(tǒng)監(jiān)控、IaaS部署等進(jìn)行分析,,提升了系統(tǒng) 的可靠性,,降低了運維難度。提出了可擴(kuò)展的數(shù)據(jù)預(yù)處理過程和數(shù)據(jù)質(zhì)量管理模型,,保障了數(shù)據(jù)服務(wù)質(zhì)量,,提高了系統(tǒng)的易用性。測試結(jié)果表明,,服務(wù)架構(gòu)能夠提供高性能,、高質(zhì)量的數(shù)據(jù)服務(wù)。
關(guān)鍵詞: 電力用采數(shù)據(jù),;數(shù)據(jù)服務(wù),;Hadoop;數(shù)據(jù)質(zhì)量管理
0 引言
隨著電力系統(tǒng)逐步走向自動化和智能化,,傳統(tǒng)的用電數(shù)據(jù)采集也由人工抄表轉(zhuǎn)變?yōu)檫h(yuǎn)程自動抄表,。目前,我國智能電表數(shù)量已超過三億塊,,用戶用電信息采集頻率更加頻繁,,且電表和主站之間的數(shù)據(jù)通信是雙向互動的,即包括信息采集也包括任務(wù)下發(fā)與控制等,,這對用電信息的采集,、存儲、查詢,、分析等全生命周期的數(shù)據(jù)處理能力提出了更高的要求,,交互數(shù)據(jù)可以輕易達(dá)到TB甚至PB等級,省級電力公司的用采增量數(shù)據(jù)也可達(dá)到上百GB或TB等級[1,,2],。
1 電力用采數(shù)據(jù)管理系統(tǒng)的現(xiàn)狀
很多省市電力公司已構(gòu)建起了相應(yīng)的數(shù)據(jù)管理系統(tǒng),并大多采用關(guān)系型數(shù)據(jù)庫構(gòu)建數(shù)據(jù)平臺,。但由于其對橫向擴(kuò)展能力較差,,無法有效支持?jǐn)?shù)據(jù)的快速增長和類型擴(kuò)展,難以對大量復(fù)雜數(shù)據(jù)進(jìn)行有效管理和應(yīng)用分析[9],。
隨著Hadoop和NoSQL等分布式技術(shù)的發(fā)展,,對TB甚至PB等級的數(shù)據(jù)進(jìn)行實時查詢、統(tǒng)計和深度挖掘成為可能[3~5],。有文獻(xiàn)對Hadoop技術(shù)在電力相關(guān)領(lǐng)域的應(yīng)用進(jìn)行了研究和測試,,但是企業(yè)界真正形成的實用系統(tǒng)還較少。其原因主要如下:
首先,,存在開發(fā)難度,。Hadoop體系的適用場景,、設(shè)計理念和傳統(tǒng)關(guān)系型數(shù)據(jù)庫有很大差異,且對通常的編程接口和方法的支持還不夠完善,。如果大范圍用Hadoop代替現(xiàn)有的成熟關(guān)系型數(shù)據(jù)庫,,會帶來適用性、穩(wěn)定性和適配等難題,。
其次,,存在運維難度。分布式的Hadoop系統(tǒng)的部署,、監(jiān)控和運維方式和單機(jī)的關(guān)系型數(shù)據(jù)庫差異較大,,存在更多的高可用性、監(jiān)控等需求,,而傳統(tǒng)電力業(yè)務(wù)人員和運維人員對這些方法并不熟悉[6],。
根據(jù)當(dāng)前電力企業(yè)在用采數(shù)據(jù)系統(tǒng)建設(shè)的突出矛盾和發(fā)展趨勢,提出基于Hadoop和關(guān)系型數(shù)據(jù)庫混合技術(shù),,構(gòu)建用采數(shù)據(jù)管理系統(tǒng)和大數(shù)據(jù)服務(wù)平臺[7],。屏蔽底層技術(shù)的復(fù)雜性,提供平臺的高可用性保障和運維監(jiān)控方法,,提供統(tǒng)一的,、可擴(kuò)展的數(shù)據(jù)清洗和預(yù)處理方法[8],提供易用的數(shù)據(jù)查詢和分析接口,,并提供數(shù)據(jù)質(zhì)量管理和統(tǒng)計分析等新業(yè)務(wù)內(nèi)容,,以及提供數(shù)據(jù)的高可用性、維護(hù)監(jiān)控,、預(yù)處理,、使用接口和數(shù)據(jù)質(zhì)量管理內(nèi)容。
2 混合數(shù)據(jù)服務(wù)平臺設(shè)計
2.1 平臺架構(gòu)設(shè)計
基于云計算的海量用電信息混合存儲技術(shù)架構(gòu)如圖1所示,。
采用HDFS與關(guān)系數(shù)據(jù)庫相結(jié)合的混合存儲,,關(guān)系數(shù)據(jù)庫主要存儲修改操作較為頻繁的業(yè)務(wù)交易數(shù)據(jù),以及檔案數(shù)據(jù)和告警事件等,;云存儲架構(gòu)主要存儲采集的電量、負(fù)荷等業(yè)務(wù)數(shù)據(jù),,當(dāng)現(xiàn)有集群規(guī)模無法滿足用電信息的增量存儲時,,可直接增加節(jié)點,實現(xiàn)動態(tài)橫向擴(kuò)展,,以保障海量采集數(shù)據(jù)的穩(wěn)定性和可靠性,,為其他智能用電應(yīng)用系統(tǒng)提供良好的數(shù)據(jù)支撐。
終端采集的原始數(shù)據(jù)經(jīng)過清洗,、解析和分類,,轉(zhuǎn)化成基礎(chǔ)業(yè)務(wù)數(shù)據(jù),、存入HDFS。大數(shù)據(jù)管理引擎負(fù)責(zé)對海量數(shù)據(jù)的裝載,、寫入,、查詢及處理等。采集終端上傳的數(shù)據(jù)實質(zhì)是半結(jié)構(gòu)化數(shù)據(jù),,并且是多種業(yè)務(wù)內(nèi)容的混合數(shù)據(jù),,利用MapReduce的并行處理能力,快速,、可靠,、穩(wěn)定地完成半結(jié)構(gòu)化數(shù)據(jù)與業(yè)務(wù)系統(tǒng)檔案數(shù)據(jù)的語義關(guān)聯(lián),從而為用電信息采集業(yè)務(wù)應(yīng)用系統(tǒng)提供完業(yè)務(wù)分類,。
在數(shù)據(jù)處理流程上,,原始數(shù)據(jù)經(jīng)過分類、處理和分析之后,,根據(jù)其特點,,小數(shù)據(jù)集導(dǎo)入到關(guān)系型數(shù)據(jù)庫,大數(shù)據(jù)集導(dǎo)入HBASE表格,,在業(yè)務(wù)系統(tǒng)建設(shè)方面,,只需要重構(gòu)少量數(shù)據(jù)接口和業(yè)務(wù)模塊,即可完成系統(tǒng)整體性能的提升,。對于檔案類,、模型類等數(shù)據(jù),仍然存放在關(guān)系型數(shù)據(jù)庫,,并可以通過Web Service,、JDBC、ODBC,、SQL等常見技術(shù)進(jìn)行訪問和調(diào)用,,原有的業(yè)務(wù)系統(tǒng)不會遭到徹底的推翻和重構(gòu),在提高系統(tǒng)性能的同時,,最大限度地避免了升級的風(fēng)險,。
Hadoop存儲和關(guān)系型存儲之間存在數(shù)據(jù)交換需求。Hadoop需要從關(guān)系型數(shù)據(jù)庫讀入檔案類數(shù)據(jù)(例如用戶信息),,其次Hadoop對原始數(shù)據(jù)的處理結(jié)論,,會導(dǎo)入到關(guān)系型數(shù)據(jù)庫,以方便業(yè)務(wù)使用,。采用開源Sqoop組件,,通過MapReduce方式,實現(xiàn)數(shù)據(jù)的導(dǎo)入導(dǎo)出,,在數(shù)據(jù)導(dǎo)入導(dǎo)出過程中需要保障數(shù)據(jù)的主鍵唯一性,,并切斷關(guān)系型數(shù)據(jù)庫的外鍵聯(lián)系,,以適應(yīng)兩種不同的數(shù)據(jù)結(jié)構(gòu)。
對于需要進(jìn)行業(yè)務(wù)查詢的大數(shù)據(jù)集(單表上億條目),,需要將數(shù)據(jù)集導(dǎo)入的HBASE,,利用其分布式檢索能力,實現(xiàn)超大數(shù)據(jù)集的實時查詢,。Hadoop可以通過批量導(dǎo)入的方法將數(shù)據(jù)寫入HBASE,,寫入時需要對數(shù)據(jù)主鍵進(jìn)行校驗和優(yōu)化設(shè)計,根據(jù)用采數(shù)據(jù)的特點,,采用哈希后的“表計編號+時間+數(shù)據(jù)類型”作為數(shù)據(jù)表主鍵,,即可以保持?jǐn)?shù)據(jù)的唯一性,也可確保數(shù)據(jù)的隨機(jī)查找速度,。
2.2 平臺高可用性設(shè)計
Hadoop本身具備機(jī)架感知,、數(shù)據(jù)塊多副本等子節(jié)點高可用性(HA)機(jī)制,但對于主節(jié)點的保障機(jī)制較差,。較早前Hadoop并不提供Namenode的高可用性保障,,只是提供了對元數(shù)據(jù)(持久化元數(shù)據(jù)fsimage和增量log數(shù)據(jù))的數(shù)據(jù)備份機(jī)制,如SecondNamenode等,。
新版本Hadoop支持對Namenode進(jìn)行在線備份和自動角色恢復(fù),。其主要思路是把主節(jié)點元數(shù)據(jù)信息存儲在一個網(wǎng)絡(luò)存儲位置,當(dāng)出現(xiàn)活躍主節(jié)點(Active Namenode)單點故障的時候,,備用主節(jié)點(Standby Namenode)會接管數(shù)據(jù)并提升自己為活躍主節(jié)點,。
在集群元數(shù)據(jù)的存儲策略上,有兩種策略可選,,一是采用獨立的網(wǎng)絡(luò)存儲單元,,二是采用分布式程序協(xié)調(diào)系統(tǒng)Zookeeper作為元數(shù)據(jù)存儲和活躍節(jié)點監(jiān)控和失效選舉。Zookeeper具有分布式數(shù)據(jù)組織,、心跳監(jiān)控,、數(shù)據(jù)同步、選舉等功能,,很適合用來管理Hadoop結(jié)構(gòu)中各類主節(jié)點(HDFS Namenode,、HBASE Hmaster、Yarn Resource Manager等)的HA,。根據(jù)用采系統(tǒng)的集群建設(shè)規(guī)模與實際情況,,設(shè)計如圖2所示。
實際部署中,,集群中的部分Datanode子節(jié)點同時擔(dān)負(fù)Zookeeper節(jié)點的功能,由于Zookeeper的選舉機(jī)制具有“半數(shù)以上通過”的策略,,因此一般采用單數(shù)個節(jié)點數(shù),,此外節(jié)點過多可能造成較大的通信開銷,,因此這里采用5或7個節(jié)點(zk節(jié)點)。
3 可配置的數(shù)據(jù)基礎(chǔ)服務(wù)流程設(shè)計
3.1 數(shù)據(jù)預(yù)處理流程
在數(shù)據(jù)預(yù)處理方面,,由于電力標(biāo)記和數(shù)據(jù)具有多種類型,,例如對階梯電價的支持,或者對不同的功率數(shù)據(jù)進(jìn)行采集等,,未來還可能出現(xiàn)更多類型的數(shù)據(jù)業(yè)務(wù)形態(tài),,要求數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)預(yù)處理和清洗流程是可配置的、動態(tài)的,。
在預(yù)處理層面,,通常只是實現(xiàn)對數(shù)據(jù)的分類存儲和規(guī)約化校驗,不會進(jìn)行復(fù)雜的統(tǒng)計分析,,因此預(yù)處理階段設(shè)計為利用一個MapReduce過程加以完成,。為實現(xiàn)可配置、可擴(kuò)展的數(shù)據(jù)預(yù)處理,,設(shè)計MapReduce的主要流程如圖3所示.
流程圖描述是一個Map函數(shù)或Reduce 函數(shù)的內(nèi)部執(zhí)行過程,。數(shù)據(jù)鍵值對(Key,Value)在進(jìn)入Map或Reduce過程時,,首先進(jìn)行通用化的預(yù)處理,,之后根據(jù)數(shù)據(jù)種類,讀取相應(yīng)預(yù)處理配置文件,,再根據(jù)配置文件調(diào)用相應(yīng)的處理邏輯或正則表達(dá)式進(jìn)行校驗,、格式轉(zhuǎn)換、解壓縮等步驟,。如果需要對預(yù)處理邏輯進(jìn)行修改,,只需要編輯正則表達(dá)式和自定義函數(shù)進(jìn)行調(diào)整即可,而不需要對主體MapReduce函數(shù)進(jìn)行修改,,不會對整體過程造成額外影響,。
3.2 數(shù)據(jù)質(zhì)量管理
針對電力用采數(shù)據(jù)的質(zhì)量管理包含兩個層面。一是管理數(shù)據(jù)在存儲,、轉(zhuǎn)換和處理過程中出現(xiàn)的錯誤,、以及平臺的容錯性和錯誤恢復(fù)等,這通過容錯和HA策略進(jìn)行保障,,并通過WEB管理界面進(jìn)行操作和查看,。二是統(tǒng)計并分析各類錯誤數(shù)值。主要解決異常的發(fā)現(xiàn),、分類和關(guān)聯(lián)統(tǒng)計,,以及可視化呈現(xiàn)等。
從技術(shù)實現(xiàn)上看,根據(jù)地區(qū),、廠商等進(jìn)行的統(tǒng)計分析,,實際是進(jìn)行了多表格的聯(lián)合(Join)查詢。在Hadoop中,,為了提高Join查詢效率,,會選擇將小表緩存到內(nèi)存,以實現(xiàn)Map Join,。對于不同的統(tǒng)計方法,,緩存的表格顯然是不一樣的,因此為了實現(xiàn)可配置的數(shù)據(jù)質(zhì)量管理,,設(shè)計可配置的數(shù)據(jù)質(zhì)量統(tǒng)計流程如圖4所示.
與預(yù)處理流程相比較:預(yù)處理不需要進(jìn)行Join查詢,,以及數(shù)據(jù)匯聚和復(fù)雜運算,其可配置的操作內(nèi)容可以放在一輪MapReduce過程中完成,,而數(shù)據(jù)質(zhì)量管理統(tǒng)計則需要多輪MapReduce依次完成,。
4 針對核心架構(gòu)的測試
4.1 測試平臺設(shè)計
在九臺X86服務(wù)器上部署數(shù)據(jù)服務(wù)平臺,并且配置高可用性(HA)策略和上文描述的機(jī)架感知策略,。服務(wù)器采用Openstack搭建虛擬化環(huán)境,,并設(shè)置虛擬機(jī)資源為:雙核CPU、8GB內(nèi)存和500 GB硬盤,。設(shè)置2個Namenode 節(jié)點 ,,7個Datanode節(jié)點。2個Namenode中,,一個設(shè)置為Active NameNode,,另一個設(shè)置為Standby NameNode。在9個節(jié)點中,,部署7個獨立zookeeper角色,,選取在2個Namenode 節(jié)點和5個Datanode節(jié)點上面。在其中一個Namenode節(jié)點上安裝Hive和Hive客戶端,。拓?fù)淙鐖D5所示,。
測試數(shù)據(jù)是某地區(qū)4億條的原始用采數(shù)據(jù),大小為30 GB左右,。體現(xiàn)了400萬以上用戶規(guī)模在一天內(nèi)的數(shù)據(jù),,和電量、線損計算需求,。由于測試在3臺實體服務(wù)器上進(jìn)行,,和一般Oracle服務(wù)器的硬件環(huán)境無可比性。測試賬戶要針對基于虛擬化搭建的Hadoop數(shù)據(jù)平臺的整體運行效果和處理效率進(jìn)行驗證,,并根據(jù)Oracle做正確性驗證,。
5.2 典型數(shù)據(jù)預(yù)處理過程測試
主要測試數(shù)據(jù)導(dǎo)入HDFS,,對電量、功率,、電壓電流等數(shù)據(jù)進(jìn)行分類寫入的時間,,即對數(shù)據(jù)進(jìn)行綜合檢索的時間。對于業(yè)務(wù)系統(tǒng),,可能要求對處理后的原始數(shù)據(jù)導(dǎo)入HBASE,以方便實時查詢,,因此也進(jìn)行了相應(yīng)測試,。測試結(jié)果如表1所示。
測試表明,,原始數(shù)據(jù)的導(dǎo)入,、預(yù)處理等過程在可接受的時間內(nèi)完成,如果存在更多的數(shù)據(jù)節(jié)點,,4億條當(dāng)日數(shù)據(jù)在更短時間內(nèi)完成導(dǎo)入和預(yù)處理,。
5.2 典型異常數(shù)據(jù)統(tǒng)計測試
主要測試電力用采數(shù)據(jù)中,常見錯誤類型的處理效果,。這里選取前文描述的時間異常,、數(shù)值異常和根據(jù)地區(qū)進(jìn)行錯誤3個業(yè)務(wù)進(jìn)行統(tǒng)計分析,并將結(jié)果數(shù)據(jù)寫新文件,。測試結(jié)果如表2所示,。
測試表明:數(shù)據(jù)服務(wù)平臺能夠?qū)ΤR婂e誤進(jìn)行處理,以輔助業(yè)務(wù)人員及時分析問題,,維修設(shè)備和系統(tǒng),,及時保證用采數(shù)據(jù)的可靠采集和高質(zhì)量。
6 結(jié)論
電力用采數(shù)據(jù)的管理和分析不僅對電力行業(yè)具有重要意義,。 Hadoop技術(shù)由于其維護(hù)和使用的復(fù)雜度較高,,目前尚未在電力行業(yè)得到大規(guī)模普及或深入應(yīng)用。本文實現(xiàn)了性能,、易擴(kuò)展的分布式數(shù)據(jù)服務(wù)平臺,。通過對高可用性和云化部署方法的設(shè)計,簡化的部署和運維的復(fù)雜度,;通過混合架構(gòu)設(shè)計,、可配置的數(shù)據(jù)預(yù)處理和數(shù)據(jù)質(zhì)量管理方法設(shè)計,提高了數(shù)據(jù)的易用性,,降低了系統(tǒng)開發(fā)和升級的難度,,提高了數(shù)據(jù)服務(wù)質(zhì)量。通過測試驗證了服務(wù)架構(gòu)的處理性能,。
參考文獻(xiàn)
[1] 張冬欣.對居民生活用電實施階梯式電價的思考[J]. 當(dāng)代經(jīng)濟(jì),,2010(4)(上).
[2] 洪釗峰.Hadoop發(fā)展現(xiàn)狀與Hadoop in China大會[C].2010.
[3] 拉賈拉曼,厄爾曼.大規(guī)模數(shù)據(jù)挖掘[M].王斌,譯.北京:人民郵電出版社,,2012
[4] 王德文,,宋亞奇,朱永利.基于云計算的智能電網(wǎng)信息平臺口[J].電力系統(tǒng)自動化,,2010,,34(22):7-12.
[5]冉冉, 張巖, 胡楠, 劉雪松, 栗楊, 姜昊,基于電力數(shù)據(jù)中心應(yīng)用標(biāo)準(zhǔn)化設(shè)計的研究[J].電子技術(shù)應(yīng)用,,2014,,40(z1).
[6]劉向東, 劉奎, 胡飛翔,等.基于MapReduce的并行聚類算法設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2014(11).
[7]張永, 張紅蕊, 路婧威.海量數(shù)據(jù)離散化算法的并行設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,,2014(6).
[8]黃偉建, 周鳴愛.MapReduce高可用性的研究與優(yōu)化[J].計算機(jī)工程與設(shè)計,,2014(11).
[9]劉文峰,顧君忠,,林欣,,等.基于Hadoop和Mahout的大數(shù)據(jù)管理分析系統(tǒng)[J].計算機(jī)應(yīng)用與軟件,2015,,32(1):47-50.