黃華林 龐欣婷
1(廣西電網(wǎng)有限責(zé)任公司 廣西 南寧 530000) 2(廣西第一工業(yè)學(xué)校 廣西 南寧 530000)
隨著信息化時(shí)代的到來與人工智能技術(shù)的不斷發(fā)展,世界各主要國(guó)家相繼提出“智能電網(wǎng)”這一概念。近幾年,各國(guó)均在大力推進(jìn)智能電網(wǎng)項(xiàng)目的建設(shè)與發(fā)展。隨著智能電網(wǎng)建設(shè)進(jìn)程的逐步深入,智能電網(wǎng)所產(chǎn)出的數(shù)據(jù)量也呈指數(shù)式增長(zhǎng),特別是智能電網(wǎng)的電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)[1-3]。這對(duì)智能電網(wǎng)的數(shù)據(jù)管理平臺(tái)的可靠性和實(shí)時(shí)性均提出了更高的要求,傳統(tǒng)的數(shù)據(jù)管理模式遠(yuǎn)遠(yuǎn)不能滿足這些求需求[4]。因此,在智能電網(wǎng)中,研究如何存儲(chǔ)、管理和共享這些關(guān)鍵數(shù)據(jù)成為急需解決的關(guān)鍵問題。
電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的顯著特點(diǎn)是數(shù)據(jù)規(guī)模大,且數(shù)據(jù)是由分布在不同地域的設(shè)備采集的,需要分布式管理。Hadoop是一個(gè)開源的云計(jì)算架構(gòu),具備可靠性高、數(shù)據(jù)處理量大以及容錯(cuò)性高等優(yōu)勢(shì),已經(jīng)成為信息領(lǐng)域研究的熱點(diǎn)[5-6]。
為解決智能電網(wǎng)中海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的高效管理,本文設(shè)計(jì)了基于Hadoop的數(shù)據(jù)資源管理平臺(tái)。首先分析了海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)管理平臺(tái)結(jié)構(gòu)與功能;然后分別針對(duì)海量電網(wǎng)數(shù)據(jù)分布式存儲(chǔ)和海量數(shù)據(jù)檢索提出了基于Hadoop集群的存儲(chǔ)方法和基于MapReduce的數(shù)據(jù)檢索方法;最后對(duì)數(shù)據(jù)資源管理平臺(tái)進(jìn)行了性能測(cè)試。
海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)資源管理平臺(tái)的主要目的是實(shí)現(xiàn)海量、分布的電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的高性能存儲(chǔ)和檢索,為后續(xù)高效準(zhǔn)確地實(shí)現(xiàn)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的分析與挖掘奠定基礎(chǔ)。整個(gè)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)管理平臺(tái)有四個(gè)模塊構(gòu)成:元數(shù)據(jù)管理模塊、信息管理模塊、節(jié)點(diǎn)管理模塊和海量存儲(chǔ)模塊?;诜植际浇Y(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)管理平臺(tái),實(shí)現(xiàn)了不同地區(qū)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的高效集中,主節(jié)點(diǎn)的服務(wù)器可以對(duì)其他節(jié)點(diǎn)數(shù)據(jù)進(jìn)行有效的調(diào)度與管理。數(shù)據(jù)資源管理平臺(tái)的結(jié)構(gòu)圖如圖1所示。
圖1 平臺(tái)總體結(jié)構(gòu)
平臺(tái)基于XML Schema實(shí)現(xiàn)元數(shù)據(jù)的表示規(guī)范、元數(shù)據(jù)界面生成方法以及元數(shù)據(jù)的組織管理,基于元數(shù)據(jù)實(shí)現(xiàn)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的有效分類與管理。XML Schema不但可以對(duì)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)進(jìn)行分類存儲(chǔ)和檢索,還可以實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)管理。平臺(tái)的元數(shù)據(jù)管理包含分類管理、Schema管理、XML解析、XML驗(yàn)證等幾個(gè)子功能模塊。各個(gè)功能模塊既相互獨(dú)立,又有機(jī)配合,共同完成對(duì)海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的組織管理。平臺(tái)元數(shù)據(jù)模塊的組織形式如圖2所示。
圖2 元數(shù)據(jù)管理
基于XML Schema實(shí)現(xiàn)海量電網(wǎng)監(jiān)測(cè)元數(shù)據(jù)的組織與存儲(chǔ)后,每一類元數(shù)據(jù)都會(huì)有相應(yīng)的組織方式,利用XML Schema可以進(jìn)行高效存儲(chǔ)與檢索。由于海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的復(fù)雜性,平臺(tái)采用自上而下的方法實(shí)現(xiàn)電網(wǎng)信息的元數(shù)據(jù)管理。因此,當(dāng)用戶上傳數(shù)據(jù)資源后,必須要準(zhǔn)確填寫該數(shù)據(jù)資源的描述字段,平臺(tái)會(huì)自動(dòng)生成一個(gè)描述文件,可以為后續(xù)的數(shù)據(jù)統(tǒng)計(jì)和資源檢索提供支撐。此外,用戶上傳數(shù)據(jù)資源后,平臺(tái)還會(huì)將該資源的物理存儲(chǔ)地址寫入數(shù)據(jù)庫(kù),方便后續(xù)資源維護(hù)。圖3為平臺(tái)的信息管理流程。
圖3 平臺(tái)信息管理流程
節(jié)點(diǎn)管理模塊是平臺(tái)設(shè)計(jì)的關(guān)鍵技術(shù)模塊之一。平臺(tái)的節(jié)點(diǎn)管理包括節(jié)點(diǎn)信息管理和節(jié)點(diǎn)管理兩部分。在測(cè)試目前常用的節(jié)點(diǎn)管理算法(例如隨機(jī)算法、輪詢算法、最小負(fù)載算法)的基礎(chǔ)上,平臺(tái)采用了一種基于抖動(dòng)系數(shù)的最小負(fù)載算法[6]。該算法有效提高了負(fù)載均衡,能夠?qū)Ω鱾€(gè)子節(jié)點(diǎn)進(jìn)行動(dòng)態(tài)監(jiān)測(cè),還可以監(jiān)控布置于各地電網(wǎng)系統(tǒng)的分布式服務(wù)器中的數(shù)據(jù)資源、知識(shí)資源以及系統(tǒng)資源等。
基于對(duì)開源Hadoop分布式文件系統(tǒng)(HDFS)[7-9]的測(cè)試基礎(chǔ)上,平臺(tái)對(duì)傳統(tǒng)的存儲(chǔ)架構(gòu)進(jìn)行了改進(jìn),以適應(yīng)對(duì)海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的高效存儲(chǔ)、管理與檢索。圖4為平臺(tái)設(shè)計(jì)的海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)訪問關(guān)系。海量存儲(chǔ)模塊由三部分構(gòu)成,即存儲(chǔ)端、查詢端與訪問鏈路。海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的來源是網(wǎng)絡(luò),包括Zigbee網(wǎng)絡(luò)或者以太網(wǎng)等。海量存儲(chǔ)模塊以Hadoop為核心,DataNode中保存各地分布式節(jié)點(diǎn)上傳的電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)。圖4中,海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)由左側(cè)的存儲(chǔ)客戶端完成,而海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的檢索查詢功能由右側(cè)的檢索客戶端完成。其中存儲(chǔ)客戶端通常部署在各地的電網(wǎng)監(jiān)測(cè)部門,而查詢客戶端位于數(shù)據(jù)中心或數(shù)據(jù)監(jiān)測(cè)工作區(qū)內(nèi)。
圖4 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)訪問關(guān)系
隨著智能電網(wǎng)建設(shè)進(jìn)程的不斷加快,電力設(shè)備采集的狀態(tài)數(shù)據(jù)類型也不斷增加,例如:用戶數(shù)據(jù)、絕緣子數(shù)據(jù)、報(bào)警數(shù)據(jù)、設(shè)備數(shù)據(jù)(張力、傾角等)、線路數(shù)據(jù)等。隨著時(shí)間的增長(zhǎng),對(duì)存儲(chǔ)這些數(shù)據(jù)所需的空間需求也會(huì)越來越大,傳統(tǒng)的數(shù)據(jù)庫(kù)無法存儲(chǔ)和處理這些海量的電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)。針對(duì)海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的存儲(chǔ)與檢索問題,平臺(tái)設(shè)計(jì)了基于Hadoop集群的數(shù)據(jù)存儲(chǔ)方式和基于MapReduce的數(shù)據(jù)檢索算法。
對(duì)海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)進(jìn)行分類?;跀?shù)據(jù)狀態(tài),將數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù)兩類。其中靜態(tài)數(shù)據(jù)是指穩(wěn)定性強(qiáng),占用的存儲(chǔ)空間相對(duì)較小的數(shù)據(jù),包括用戶數(shù)據(jù)、線路數(shù)據(jù)、檢測(cè)設(shè)備數(shù)據(jù)、絕緣子數(shù)據(jù)等;動(dòng)態(tài)數(shù)據(jù)是指數(shù)據(jù)會(huì)隨著時(shí)間的推移而飛速增長(zhǎng),需要的存儲(chǔ)空間大,包括電網(wǎng)狀態(tài)檢測(cè)過程中采集的溫度數(shù)據(jù)、報(bào)警數(shù)據(jù)、張力數(shù)據(jù)以及傾角數(shù)據(jù)等。動(dòng)態(tài)數(shù)據(jù)是電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)存儲(chǔ)與檢索的重點(diǎn)和難點(diǎn)。平臺(tái)的靜態(tài)數(shù)據(jù)采用傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)。針對(duì)海量電網(wǎng)狀態(tài)監(jiān)測(cè)動(dòng)態(tài)數(shù)據(jù)的存儲(chǔ)問題,設(shè)計(jì)了基于HDFS的快速存儲(chǔ)框架。
在數(shù)據(jù)資源管理平臺(tái)中,數(shù)據(jù)的接收與上傳是由存儲(chǔ)客戶端完成的,因此電網(wǎng)狀態(tài)監(jiān)測(cè)額數(shù)據(jù)由存儲(chǔ)客戶端上傳到HDFS[10]。為了提高數(shù)據(jù)存儲(chǔ)速度以及減少系統(tǒng)與硬盤的交互次數(shù),建立一個(gè)數(shù)據(jù)緩存區(qū),用于保存數(shù)據(jù)發(fā)送端傳輸?shù)臄?shù)據(jù),依據(jù)客戶端數(shù)據(jù)處理能力,自適應(yīng)地設(shè)定緩存區(qū)大小(如64 MB、128 MB)。當(dāng)接收數(shù)據(jù)存滿緩存區(qū)后,客戶端將數(shù)據(jù)上傳至HDFS。因此,客戶端與HDFS每次交互的數(shù)據(jù)大小相等,既便于數(shù)據(jù)維護(hù),又顯著地減少了數(shù)據(jù)交互次數(shù)與元數(shù)據(jù)量。具體實(shí)現(xiàn)流程如圖5所示。
圖5 數(shù)據(jù)存儲(chǔ)流程
為提高海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的檢索效率,平臺(tái)設(shè)計(jì)了基于MapReduce的海量數(shù)據(jù)檢索算法。該檢索算法中,核心內(nèi)容是Map和Reduce函數(shù)。
檢索客戶端主函數(shù)的功能是實(shí)現(xiàn)用戶檢索與MapReduce框架直接的信息交互。在海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)管理平臺(tái)中,用戶在檢索過程中,需要錄入的檢索信息包括:檢索文件地址、檢索結(jié)果導(dǎo)出文件地址、檢索關(guān)鍵詞、關(guān)鍵詞位置以及Reducer個(gè)數(shù)。檢索算法基于用戶輸入的檢索信息,將符合條件的數(shù)據(jù)進(jìn)行高效匯總,匯總后的數(shù)據(jù)直接呈現(xiàn)給用戶。因此,數(shù)據(jù)檢索過程的重點(diǎn)是客戶端主函數(shù)和Map函數(shù)。
2.2.1 主函數(shù)
主函數(shù)的重要功能就是設(shè)置與數(shù)據(jù)檢索過程相關(guān)的各個(gè)參數(shù),平臺(tái)中需要設(shè)置的檢索參數(shù)如圖6所示。
圖6 主函數(shù)需要設(shè)置的參數(shù)
2.2.2 Map函數(shù)
首先對(duì)主函數(shù)導(dǎo)入的檢索信息進(jìn)行分割形成多個(gè)Split,每個(gè)Map函數(shù)檢索一個(gè)Split,并對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行檢索查詢,具體查詢過程如下:
步驟1Map任務(wù)開始,讀取相關(guān)檢索信息。
步驟2讀入一行關(guān)鍵詞數(shù)據(jù),將數(shù)據(jù)分解為字符串?dāng)?shù)組。
步驟3讀取待檢索的存儲(chǔ)數(shù)據(jù)。
步驟4與檢索關(guān)鍵詞匹配。若匹配成功,將鍵值保存如臨時(shí)文件;否則繼續(xù)匹配下一個(gè)關(guān)鍵詞。
步驟5檢測(cè)是否有下一個(gè)關(guān)鍵詞。若有,轉(zhuǎn)入步驟4;否則,當(dāng)前Map任務(wù)結(jié)束。
步驟6導(dǎo)出數(shù)據(jù)檢索結(jié)果。
為驗(yàn)證文中設(shè)計(jì)的海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)管理平臺(tái)的性能,在實(shí)驗(yàn)室搭建的Hadoop平臺(tái)上進(jìn)行性能測(cè)試。測(cè)試的內(nèi)容包括平臺(tái)的I/O基準(zhǔn)性能、數(shù)據(jù)存儲(chǔ)性能和數(shù)據(jù)檢索性能。測(cè)試環(huán)境如下:平臺(tái)共有27個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)客戶端的配置均為8核CPU,主頻3.3 GHz,內(nèi)存8 GB,網(wǎng)絡(luò)為千兆以太網(wǎng),Hadoop版本2.6.0。
在數(shù)據(jù)管理平臺(tái)沒有其他任務(wù)的條件下,基于TestDSFIO進(jìn)行HDFS的基準(zhǔn)I/O性能測(cè)試。測(cè)試內(nèi)容包括不同文件大小、不同文件個(gè)數(shù)時(shí)HDFS的時(shí)間消耗。
首先,測(cè)試20個(gè)文件不同文件大小的讀寫操作,測(cè)試結(jié)果如圖7所示。圖中繪制了平均寫操作的運(yùn)行時(shí)間和文件整體寫操作的運(yùn)行時(shí)間。測(cè)試結(jié)果表明,隨著文件大小的逐漸增加,平臺(tái)寫文件的總體時(shí)間消耗也逐漸增加,但是平均時(shí)間消耗一直在下降。此外,還對(duì)讀文件的時(shí)間消耗進(jìn)行測(cè)試,測(cè)試曲線與圖7的數(shù)值不同但變化趨勢(shì)相同。
圖7 文件大小對(duì)運(yùn)行時(shí)間的影響
然后,測(cè)試平臺(tái)對(duì)不同文件個(gè)數(shù)的讀寫操作,測(cè)試結(jié)果如圖8所示。圖8給出的是寫文件的時(shí)間消耗,文件大小為100 MB。隨著文件數(shù)量的增多,同樣是總體時(shí)間消耗逐漸增加,平均時(shí)間消耗下降。
圖8 文件個(gè)數(shù)對(duì)運(yùn)行時(shí)間影響
開啟海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)管理測(cè)試平臺(tái),模擬10個(gè)數(shù)據(jù)發(fā)送端線程,各線程每秒產(chǎn)生200條數(shù)據(jù)(數(shù)據(jù)量約為32 KB)。數(shù)據(jù)沒間隔2小時(shí)上傳一次,每個(gè)上傳文件約為120 MB。平臺(tái)運(yùn)行10小時(shí)后,統(tǒng)計(jì)文件分布情況。測(cè)試結(jié)果表明,文件被成功上傳至各個(gè)節(jié)點(diǎn),且資源分配十分均勻,沒有發(fā)生數(shù)據(jù)丟包問題,存儲(chǔ)過程成功完成。
設(shè)置發(fā)送端數(shù)據(jù),模擬文件大小和發(fā)送頻率均不相同的電網(wǎng)數(shù)據(jù)文件。開啟數(shù)據(jù)檢索客戶端,測(cè)試數(shù)據(jù)檢索時(shí)間消耗。為了驗(yàn)證平臺(tái)的數(shù)據(jù)檢索性能,將同樣數(shù)據(jù)存儲(chǔ)到Oracle系統(tǒng)中,并統(tǒng)計(jì)檢索時(shí)間消耗。設(shè)置幾組檢索關(guān)鍵詞,分別統(tǒng)計(jì)平臺(tái)與Oracle系統(tǒng)的數(shù)據(jù)檢索性能,測(cè)試結(jié)果如表2所示。表中每組測(cè)試均是5次測(cè)試所得的平均時(shí)間消耗。
表1 檢索時(shí)間對(duì)比
測(cè)試結(jié)果表明,當(dāng)檢索條數(shù)低于150萬(wàn)時(shí),Oracle系統(tǒng)的時(shí)間消耗較少,但是隨著檢索條數(shù)的繼續(xù)增加,基于Hadoop的集群檢索優(yōu)勢(shì)得到了充分的體現(xiàn),檢索耗費(fèi)時(shí)間明顯少于Oracle系統(tǒng)。測(cè)試實(shí)驗(yàn)驗(yàn)證了平臺(tái)更適合海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的檢索。
本文研究了智能電網(wǎng)中海量電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的存儲(chǔ)與管理問題,設(shè)計(jì)了基于Hadoop的海量數(shù)據(jù)管理平臺(tái)。測(cè)試結(jié)果表明,該平臺(tái)能夠高效地存儲(chǔ)與檢索海量數(shù)據(jù)。平臺(tái)的設(shè)計(jì)為不同地區(qū)電網(wǎng)狀態(tài)監(jiān)測(cè)數(shù)據(jù)的分布式存儲(chǔ)和管理奠定了基礎(chǔ)。進(jìn)一步測(cè)試結(jié)果表明,平臺(tái)對(duì)大文件的傳輸效率還有很大的提升空間,是下一步研究的重點(diǎn)問題。