黃駿
(廣東電網(wǎng)公司陽江供電局,廣東陽江 529500)
基于Hadoop的高頻電力負(fù)荷監(jiān)測(cè)數(shù)據(jù)存儲(chǔ)研究
黃駿
(廣東電網(wǎng)公司陽江供電局,廣東陽江 529500)
電力負(fù)荷數(shù)據(jù)采集頻率已從分鐘級(jí)低頻數(shù)據(jù)轉(zhuǎn)向秒級(jí)甚至毫秒級(jí)的高頻數(shù)據(jù),數(shù)據(jù)存儲(chǔ)量級(jí)呈數(shù)百倍增長,對(duì)數(shù)據(jù)的存儲(chǔ)及查詢的效率要求更高。為處理這些海量數(shù)據(jù),設(shè)計(jì)了基于Hadoop技術(shù)的負(fù)荷數(shù)據(jù)存儲(chǔ)系統(tǒng),并驗(yàn)證了該系統(tǒng)具備分布式存儲(chǔ)及實(shí)時(shí)查詢的優(yōu)勢(shì),適合智能電網(wǎng)環(huán)境下高頻負(fù)荷數(shù)據(jù)的存儲(chǔ)。
Hadoop;高頻電力負(fù)荷;數(shù)據(jù)存儲(chǔ)
隨著智能電網(wǎng)技術(shù)的大力推進(jìn),智能電網(wǎng)環(huán)境下電力行業(yè)數(shù)據(jù)量以幾何形式激增。電力負(fù)荷數(shù)據(jù)已從傳統(tǒng)的分鐘級(jí)低頻數(shù)據(jù)轉(zhuǎn)向了以秒甚至毫秒級(jí)采集的高頻數(shù)據(jù),對(duì)數(shù)據(jù)存儲(chǔ)的可靠性和實(shí)時(shí)性要求更高,原有存儲(chǔ)系統(tǒng)已遠(yuǎn)遠(yuǎn)不能滿足海量數(shù)據(jù)的要求。國內(nèi)現(xiàn)有的電力信息系統(tǒng)建設(shè)大多采用大型服務(wù)器,存儲(chǔ)部分采用磁盤陣列,數(shù)據(jù)庫采用關(guān)系型數(shù)據(jù)庫,導(dǎo)致系統(tǒng)擴(kuò)展性低、成本高、查詢和計(jì)算效率較低,難以適應(yīng)智能電網(wǎng)對(duì)高頻電力負(fù)荷數(shù)據(jù)可靠性和實(shí)時(shí)性的要求。
隨著Map Reduce編程思想的提出,它在互聯(lián)網(wǎng)Web應(yīng)用中成為研究熱點(diǎn)。Hadoop作為MapRe?duce的一個(gè)開源實(shí)現(xiàn),由于成功的借鑒了Big?Table和MapReduce并行算法等技術(shù),使得它能夠?qū)Υ笠?guī)模海量數(shù)據(jù)進(jìn)行分布式處理,已成為一個(gè)成熟的軟件框架。Hadoop通常會(huì)保存和維護(hù)多個(gè)數(shù)據(jù)副本,因?yàn)樗紤]到計(jì)算和存儲(chǔ)過程中可能會(huì)出現(xiàn)一些故障,以便當(dāng)故障出現(xiàn)時(shí)能夠?qū)Τ鲥e(cuò)的地方重新進(jìn)行計(jì)算處理,從而具備糾錯(cuò)功能。HDFS(Hadoop Distributed File System)作為Ha?doop上的一個(gè)分布式文件系統(tǒng),能夠并行的進(jìn)行文件操作,從而可以加快任務(wù)處理速度。Hadoop的計(jì)算具有一定的擴(kuò)展性,能夠處理PB級(jí)數(shù)據(jù),但其擴(kuò)展性的強(qiáng)弱受部署Hadoop的計(jì)算機(jī)群的規(guī)模的影響較大,Hadoop如今已廣泛應(yīng)用于搜索引擎、數(shù)據(jù)挖掘和生物計(jì)算等領(lǐng)域[1-2]。
本文針對(duì)電力負(fù)荷數(shù)據(jù)的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)基于Hadoop的高頻電力負(fù)荷數(shù)據(jù)存儲(chǔ)系統(tǒng)。
Hadoop文件系統(tǒng)(HDFS)是適合存儲(chǔ)電力高頻負(fù)荷數(shù)據(jù)的存儲(chǔ)系統(tǒng),它作為一個(gè)分布式文件系統(tǒng)運(yùn)行在普通的硬件上。由于HDFS的高容錯(cuò)性,可以在低成本的硬件之上部署大數(shù)據(jù)集的應(yīng)用程序。HDFS的數(shù)據(jù)上傳流程如圖1所示。
圖1 HDFS上傳流程
一個(gè)HDFS集群是由一個(gè)主服務(wù)器NameNode和多個(gè)數(shù)據(jù)節(jié)點(diǎn)組成。主服務(wù)器NameNod的通常用來控制客戶端的文件訪問和實(shí)現(xiàn)文件命名空間的管理。NameNod是仲裁者,通常系統(tǒng)設(shè)計(jì)的實(shí)際數(shù)據(jù)不經(jīng)過NameNode。數(shù)據(jù)節(jié)點(diǎn)則用來管理存儲(chǔ),通常一臺(tái)機(jī)器部署一個(gè)數(shù)據(jù)節(jié)點(diǎn),有時(shí)也會(huì)在一臺(tái)機(jī)器上部署多個(gè)數(shù)據(jù)節(jié)點(diǎn)。HDFS不僅暴露文件的命名空間而且允許將用戶數(shù)據(jù)以文件形式存儲(chǔ)。其原理機(jī)制是首先將文件分割成一個(gè)或多個(gè)塊,然后再將這些塊存儲(chǔ)在一組數(shù)據(jù)節(jié)點(diǎn)中。NameNode用于文件命名空間和目錄的操作,例如文件和目錄的打開、關(guān)閉和重命名。同時(shí)Na?meNode還用來確定數(shù)據(jù)節(jié)點(diǎn)和塊之間的對(duì)應(yīng)關(guān)系。數(shù)據(jù)節(jié)點(diǎn)則既要負(fù)責(zé)來自文件系統(tǒng)的客戶讀寫請(qǐng)求,又要執(zhí)行塊的創(chuàng)建,刪除和來自Na?meNode的塊復(fù)制等指示操作。NameNode和數(shù)據(jù)節(jié)點(diǎn)軟件通常都是運(yùn)行在普通的linux機(jī)器之上,由于HDFS使用Java編寫,因此任何支持Java的機(jī)器都可以運(yùn)行NameNode和數(shù)據(jù)節(jié)點(diǎn)。另外,由于Java語言的可移植性,因此將HDFS應(yīng)用并部署到大范圍的機(jī)器上也非常容易。當(dāng)部署到大范圍的機(jī)器上時(shí),通常會(huì)有一個(gè)機(jī)器專門用來管理和運(yùn)行NameNode,機(jī)群中剩下的每個(gè)機(jī)器則運(yùn)行一個(gè)數(shù)據(jù)節(jié)點(diǎn)實(shí)例。值得注意的是HDFS不允許在一個(gè)機(jī)器上運(yùn)行多個(gè)數(shù)據(jù)節(jié)點(diǎn)的實(shí)例,然而在實(shí)際的部署過程中也不會(huì)出現(xiàn)這種情況。上述這種單NameNode的機(jī)群模式可以極大地簡單化系統(tǒng)的復(fù)雜度。
1.1 Hadoop集群搭建
通過虛擬化技術(shù),在安裝Centos操作系統(tǒng)的PC機(jī)上,搭建內(nèi)網(wǎng)環(huán)境(IP段:192.168.0.0),在各機(jī)上安裝JDK、SSH和Hadoop,即完成了Ha?doop分布式集群的搭建。
傳統(tǒng)的電力負(fù)荷數(shù)據(jù)通常采用關(guān)系型數(shù)據(jù)庫來實(shí)現(xiàn)存儲(chǔ),然而對(duì)于海量數(shù)據(jù)而言,關(guān)系型數(shù)據(jù)庫的存儲(chǔ)和查詢效率很低,難以適應(yīng)智能電網(wǎng)對(duì)高頻電力負(fù)荷數(shù)據(jù)可靠性和實(shí)時(shí)性的要求。在上述搭建好的Hadoop平臺(tái)上,通過實(shí)驗(yàn)測(cè)試證明了HDFS分布式數(shù)據(jù)庫管理的高效性。根據(jù)上述HDFS的特點(diǎn),設(shè)計(jì)了一種基于HDFS的數(shù)據(jù)結(jié)構(gòu),如表1所示。
表1 LL_HD_MAIN表
用記錄的ID作為RowKey,表示記錄的唯一標(biāo)識(shí),表中共有1個(gè)列簇FInfo列簇,存儲(chǔ)抽取結(jié)果的相關(guān)信息.包括負(fù)荷值、訪問者、來源、日期、地區(qū)、負(fù)荷類型等。LL_HD_MAIN表是一張稀疏的半結(jié)構(gòu)化的表,一張表即可滿足業(yè)務(wù)需求。對(duì)于一個(gè)RowKey而言,只需制定相關(guān)的列簇名即可獲得相關(guān)查詢的全部信息。LL_HD_MAIN表的物理存儲(chǔ)結(jié)構(gòu)如表2。
表2 文檔信息物理存儲(chǔ)片段
上述物理表結(jié)構(gòu)表明,在HDFS系統(tǒng)中實(shí)際存儲(chǔ)時(shí),業(yè)務(wù)相關(guān)數(shù)據(jù)的存儲(chǔ)是連續(xù),這樣可以大大減少查詢的時(shí)間耗時(shí)。
1.2 MapReduce設(shè)計(jì)
MapReduce設(shè)計(jì)的第一步是選擇一個(gè)核心節(jié)點(diǎn),這個(gè)核心節(jié)點(diǎn)包含在集群節(jié)點(diǎn)中。它作為一個(gè)主控角色存在,稱為master,主要用來控制任務(wù)的分配,待分配的任務(wù)包括reduce任務(wù)和map任務(wù),其數(shù)量分別為R和M。Master通常會(huì)將re?duce和map任務(wù)分配給將空閑的worker。每當(dāng)有數(shù)據(jù)輸入,master便會(huì)給worker指定一個(gè)map任務(wù),讓其處理相關(guān)的文件塊數(shù)據(jù),同時(shí)master還會(huì)在臨近的機(jī)器或副本機(jī)器上開啟map任務(wù),以便減少遠(yuǎn)程I/O操作造成的時(shí)延。
Worker的任務(wù)是讀取文件塊,進(jìn)行塊處理,分析key/value并將結(jié)果轉(zhuǎn)交給map函數(shù),這個(gè)map函數(shù)是用戶定義的。當(dāng)Map worker的任務(wù)執(zhí)行完時(shí),便會(huì)告知master,讓其更新數(shù)據(jù)(例如緩沖文件的位置信息),并將信息傳遞給正在運(yùn)行的Reduce worker[3-4]。Reduce worker首先將排序后的所有中間數(shù)據(jù)進(jìn)行迭代處理,然后將相關(guān)的中間結(jié)果和key轉(zhuǎn)交給reduce函數(shù)。這個(gè)Reduce函數(shù)也是用戶自定義的,其作用是將中間結(jié)果輸出到最終的文件里。
本文實(shí)驗(yàn)建立在由10個(gè)節(jié)點(diǎn)組成的Hadoop平臺(tái)上,每個(gè)節(jié)點(diǎn)物理機(jī)器配置為4核i5 CPU,4G內(nèi)存,100 Mbit/s以太網(wǎng)帶寬,虛擬機(jī)配置為2核CPU,2G內(nèi)存,100G硬盤空間。
實(shí)驗(yàn)環(huán)境主要考察Hadoop平臺(tái)受數(shù)據(jù)規(guī)模的影響。實(shí)驗(yàn)的數(shù)據(jù)規(guī)模選取分別為:10萬,100萬,500萬,1 000萬和2 000萬進(jìn)行實(shí)驗(yàn)。為了保證實(shí)驗(yàn)的可靠性,每個(gè)數(shù)據(jù)量進(jìn)行3次實(shí)驗(yàn)取平均值,表3給出了實(shí)驗(yàn)結(jié)果。
圖3為表3實(shí)驗(yàn)數(shù)據(jù)的折線圖表示,其中縱坐標(biāo)表示時(shí)間(單位為秒),橫坐標(biāo)表示數(shù)據(jù)集的大?。▎挝粸槿f)。
圖2 Map函數(shù)處理過程
表3 試驗(yàn)比較
實(shí)驗(yàn)結(jié)果表明,隨著數(shù)據(jù)量的增加,Oracle單機(jī)的耗時(shí)增加幅度一直高于Hadoop平臺(tái),Ha?doop平臺(tái)節(jié)約的時(shí)間逐漸增加,優(yōu)勢(shì)越來越明顯,因此,實(shí)驗(yàn)搭建的Hadoop集群適合處理大規(guī)模數(shù)據(jù)的讀寫。但是,當(dāng)數(shù)據(jù)量很小時(shí),Hadoop平臺(tái)的擴(kuò)展效率比Oracle單機(jī)差。
針對(duì)智能電網(wǎng)環(huán)境下高頻電力負(fù)荷數(shù)據(jù)海量、分布式的特點(diǎn),本文設(shè)計(jì)了基于Hadoop技術(shù)的高頻電力負(fù)荷數(shù)據(jù)存儲(chǔ)系統(tǒng),測(cè)試環(huán)境搭建了10個(gè)普通PC機(jī)的Hadoop集群,實(shí)驗(yàn)結(jié)果顯示Ha?doop集群適合于處理大規(guī)模、海量數(shù)據(jù);應(yīng)用HDFS實(shí)現(xiàn)負(fù)荷數(shù)據(jù)的分布式存儲(chǔ)于各個(gè)集群節(jié)點(diǎn),數(shù)據(jù)無異常;應(yīng)用MapReduce實(shí)現(xiàn)數(shù)據(jù)查詢,并與Oracle單機(jī)關(guān)系型數(shù)據(jù)庫查詢性能做了對(duì)比,結(jié)果顯示,隨著數(shù)據(jù)的增大,Hadoop集群查詢優(yōu)勢(shì)明顯,適用于高頻電力負(fù)荷數(shù)據(jù)庫系統(tǒng)建設(shè)。
Research on the Data Storage System of High-Frequency Power Load Based on Hadoop Technology
HUANG Jun
(Yangjiang Power Supply Bureau,Yangjiang529500,China)
Electric load data acquisition frequency shift from the minute level low frequency data in seconds or even milliseconds of high frequency data,was the order of several hundred times the data storage growth,data storage and query efficiency requirements higher.To deal with these massive data,design data storage system based on Hadoop technologies,and verify that the system has the advantages of distributed storage and real-time queries,suitable for high frequency load data stored under the smart grid environment.
Hadoop;high-frequency power load;data storage
TP274
A
1009-9492(2014)03-0033-03
10.3969/j.issn.1009-9492.2014.03.010
2014-01-19