黃駿
(廣東電網公司陽江供電局,廣東陽江 529500)
基于Hadoop的高頻電力負荷監測數據存儲研究
黃駿
(廣東電網公司陽江供電局,廣東陽江 529500)
電力負荷數據采集頻率已從分鐘級低頻數據轉向秒級甚至毫秒級的高頻數據,數據存儲量級呈數百倍增長,對數據的存儲及查詢的效率要求更高。為處理這些海量數據,設計了基于Hadoop技術的負荷數據存儲系統,并驗證了該系統具備分布式存儲及實時查詢的優勢,適合智能電網環境下高頻負荷數據的存儲。
Hadoop;高頻電力負荷;數據存儲
隨著智能電網技術的大力推進,智能電網環境下電力行業數據量以幾何形式激增。電力負荷數據已從傳統的分鐘級低頻數據轉向了以秒甚至毫秒級采集的高頻數據,對數據存儲的可靠性和實時性要求更高,原有存儲系統已遠遠不能滿足海量數據的要求。國內現有的電力信息系統建設大多采用大型服務器,存儲部分采用磁盤陣列,數據庫采用關系型數據庫,導致系統擴展性低、成本高、查詢和計算效率較低,難以適應智能電網對高頻電力負荷數據可靠性和實時性的要求。
隨著Map Reduce編程思想的提出,它在互聯網Web應用中成為研究熱點。Hadoop作為MapRe?duce的一個開源實現,由于成功的借鑒了Big?Table和MapReduce并行算法等技術,使得它能夠對大規模海量數據進行分布式處理,已成為一個成熟的軟件框架。Hadoop通常會保存和維護多個數據副本,因為它考慮到計算和存儲過程中可能會出現一些故障,以便當故障出現時能夠對出錯的地方重新進行計算處理,從而具備糾錯功能。HDFS(Hadoop Distributed File System)作為Ha?doop上的一個分布式文件系統,能夠并行的進行文件操作,從而可以加快任務處理速度。Hadoop的計算具有一定的擴展性,能夠處理PB級數據,但其擴展性的強弱受部署Hadoop的計算機群的規模的影響較大,Hadoop如今已廣泛應用于搜索引擎、數據挖掘和生物計算等領域[1-2]。
本文針對電力負荷數據的特點,設計并實現基于Hadoop的高頻電力負荷數據存儲系統。
Hadoop文件系統(HDFS)是適合存儲電力高頻負荷數據的存儲系統,它作為一個分布式文件系統運行在普通的硬件上。由于HDFS的高容錯性,可以在低成本的硬件之上部署大數據集的應用程序。HDFS的數據上傳流程如圖1所示。

圖1 HDFS上傳流程
一個HDFS集群是由一個主服務器NameNode和多個數據節點組成。主服務器NameNod的通常用來控制客戶端的文件訪問和實現文件命名空間的管理。NameNod是仲裁者,通常系統設計的實際數據不經過NameNode。數據節點則用來管理存儲,通常一臺機器部署一個數據節點,有時也會在一臺機器上部署多個數據節點。HDFS不僅暴露文件的命名空間而且允許將用戶數據以文件形式存儲。其原理機制是首先將文件分割成一個或多個塊,然后再將這些塊存儲在一組數據節點中。NameNode用于文件命名空間和目錄的操作,例如文件和目錄的打開、關閉和重命名。同時Na?meNode還用來確定數據節點和塊之間的對應關系。數據節點則既要負責來自文件系統的客戶讀寫請求,又要執行塊的創建,刪除和來自Na?meNode的塊復制等指示操作。NameNode和數據節點軟件通常都是運行在普通的linux機器之上,由于HDFS使用Java編寫,因此任何支持Java的機器都可以運行NameNode和數據節點。另外,由于Java語言的可移植性,因此將HDFS應用并部署到大范圍的機器上也非常容易。當部署到大范圍的機器上時,通常會有一個機器專門用來管理和運行NameNode,機群中剩下的每個機器則運行一個數據節點實例。值得注意的是HDFS不允許在一個機器上運行多個數據節點的實例,然而在實際的部署過程中也不會出現這種情況。上述這種單NameNode的機群模式可以極大地簡單化系統的復雜度。
1.1 Hadoop集群搭建
通過虛擬化技術,在安裝Centos操作系統的PC機上,搭建內網環境(IP段:192.168.0.0),在各機上安裝JDK、SSH和Hadoop,即完成了Ha?doop分布式集群的搭建。
傳統的電力負荷數據通常采用關系型數據庫來實現存儲,然而對于海量數據而言,關系型數據庫的存儲和查詢效率很低,難以適應智能電網對高頻電力負荷數據可靠性和實時性的要求。在上述搭建好的Hadoop平臺上,通過實驗測試證明了HDFS分布式數據庫管理的高效性。根據上述HDFS的特點,設計了一種基于HDFS的數據結構,如表1所示。

表1 LL_HD_MAIN表
用記錄的ID作為RowKey,表示記錄的唯一標識,表中共有1個列簇FInfo列簇,存儲抽取結果的相關信息.包括負荷值、訪問者、來源、日期、地區、負荷類型等。LL_HD_MAIN表是一張稀疏的半結構化的表,一張表即可滿足業務需求。對于一個RowKey而言,只需制定相關的列簇名即可獲得相關查詢的全部信息。LL_HD_MAIN表的物理存儲結構如表2。

表2 文檔信息物理存儲片段
上述物理表結構表明,在HDFS系統中實際存儲時,業務相關數據的存儲是連續,這樣可以大大減少查詢的時間耗時。
1.2 MapReduce設計
MapReduce設計的第一步是選擇一個核心節點,這個核心節點包含在集群節點中。它作為一個主控角色存在,稱為master,主要用來控制任務的分配,待分配的任務包括reduce任務和map任務,其數量分別為R和M。Master通常會將re?duce和map任務分配給將空閑的worker。每當有數據輸入,master便會給worker指定一個map任務,讓其處理相關的文件塊數據,同時master還會在臨近的機器或副本機器上開啟map任務,以便減少遠程I/O操作造成的時延。
Worker的任務是讀取文件塊,進行塊處理,分析key/value并將結果轉交給map函數,這個map函數是用戶定義的。當Map worker的任務執行完時,便會告知master,讓其更新數據(例如緩沖文件的位置信息),并將信息傳遞給正在運行的Reduce worker[3-4]。Reduce worker首先將排序后的所有中間數據進行迭代處理,然后將相關的中間結果和key轉交給reduce函數。這個Reduce函數也是用戶自定義的,其作用是將中間結果輸出到最終的文件里。
本文實驗建立在由10個節點組成的Hadoop平臺上,每個節點物理機器配置為4核i5 CPU,4G內存,100 Mbit/s以太網帶寬,虛擬機配置為2核CPU,2G內存,100G硬盤空間。
實驗環境主要考察Hadoop平臺受數據規模的影響。實驗的數據規模選取分別為:10萬,100萬,500萬,1 000萬和2 000萬進行實驗。為了保證實驗的可靠性,每個數據量進行3次實驗取平均值,表3給出了實驗結果。
圖3為表3實驗數據的折線圖表示,其中縱坐標表示時間(單位為秒),橫坐標表示數據集的大小(單位為萬)。

圖2 Map函數處理過程

表3 試驗比較
實驗結果表明,隨著數據量的增加,Oracle單機的耗時增加幅度一直高于Hadoop平臺,Ha?doop平臺節約的時間逐漸增加,優勢越來越明顯,因此,實驗搭建的Hadoop集群適合處理大規模數據的讀寫。但是,當數據量很小時,Hadoop平臺的擴展效率比Oracle單機差。
針對智能電網環境下高頻電力負荷數據海量、分布式的特點,本文設計了基于Hadoop技術的高頻電力負荷數據存儲系統,測試環境搭建了10個普通PC機的Hadoop集群,實驗結果顯示Ha?doop集群適合于處理大規模、海量數據;應用HDFS實現負荷數據的分布式存儲于各個集群節點,數據無異常;應用MapReduce實現數據查詢,并與Oracle單機關系型數據庫查詢性能做了對比,結果顯示,隨著數據的增大,Hadoop集群查詢優勢明顯,適用于高頻電力負荷數據庫系統建設。
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