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