陳 敏,湯曉安,劉 行,謝 鑫
(1.湖南信息學(xué)院 電子信息學(xué)院,長沙410151;2.國防科技大學(xué) 電子科學(xué)學(xué)院,長沙410073;3.長沙北斗產(chǎn)業(yè)安全技術(shù)研究院,長沙410205)
當(dāng)前,風(fēng)力發(fā)電已成為二十一世紀全球最重要的綠色再生能源。預(yù)計2020年,世界風(fēng)力發(fā)電機的裝機容量將達到12.45 億千瓦,發(fā)電量占世界電力消費量的12%[1]。目前中國的中小風(fēng)力發(fā)電廠占全國風(fēng)力發(fā)電企業(yè)總數(shù)的90%[2],可以看出現(xiàn)階段中小型風(fēng)力發(fā)電廠是我國風(fēng)力發(fā)電行業(yè)的主力軍。對于風(fēng)力發(fā)電而言,高性能數(shù)據(jù)存取是風(fēng)力發(fā)電SCADA 系統(tǒng)的核心,是風(fēng)電行業(yè)健康發(fā)展的基石[3]。隨著風(fēng)電行業(yè)的高速發(fā)展,數(shù)據(jù)量隨之增多,而傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)存取性能有限,不能很好地支持風(fēng)電數(shù)據(jù)高性能的存儲、查詢和分析[4]。
關(guān)于高性能數(shù)據(jù)存取,現(xiàn)階段主要采用大數(shù)據(jù)分布式列式數(shù)據(jù)庫系統(tǒng)HBase 作為存儲載體[5]。此方面,國內(nèi)外已有較多研究成果,文獻[6]已經(jīng)成功應(yīng)用HBase 并且進行了開源版本很多再開發(fā)和創(chuàng)新;文獻[7]利用HBase 重構(gòu)了其存儲層,進行了基于HBase 的實時傳輸平臺研究;文獻[8]提出了一種基于HBase 的時序監(jiān)控數(shù)據(jù)存儲以及提升數(shù)據(jù)存儲和處理效率的方案;文獻[9]深入研究了基于HBase的配用電海量時序數(shù)據(jù)存取技術(shù);文獻[10]設(shè)計了一個基于Hadoop 集群的變壓器在線監(jiān)測數(shù)據(jù)存儲方案,該方案利用HBase 具有快速實時讀寫數(shù)據(jù)的優(yōu)勢,將變壓器在線監(jiān)測系統(tǒng)采集的海量數(shù)據(jù)實時快速地存儲;文獻[11]研究并實現(xiàn)了一個基于HBase的高效數(shù)據(jù)存取平臺;文獻[12]通過改進 HBase 表的設(shè)計以及k-means 聚類算法,較大程度地提高了公安大數(shù)據(jù)圖片的檢索效率。
但是上述研究成果主要是面向大集群、高成本的業(yè)務(wù)需求,眾多國內(nèi)基于小集群低成本環(huán)境(當(dāng)前小集群低成本主要指不超過5 臺中低性能服務(wù)器)的中小風(fēng)力發(fā)電廠由于其固有的服務(wù)器規(guī)模小、成本投入低等局限性無法直接使用現(xiàn)有研究成果,所以針對現(xiàn)有眾多小集群、 低成本環(huán)境下的風(fēng)電SCADA 系統(tǒng),開展其高性能數(shù)據(jù)存取算法研究意義重大且迫在眉睫。
本文以HBase 為工具載體,研究基于HBase的、 適用于小集群風(fēng)電SCADA 系統(tǒng)的高效數(shù)據(jù)存取算法。本文研究以長沙北斗開放實驗室下屬風(fēng)能新技術(shù)開放實驗室的 “風(fēng)電場跨平臺中央監(jiān)控系統(tǒng)”為應(yīng)用場景。論文對現(xiàn)有Hbase 數(shù)據(jù)存取方法的存取性能進行了深入對比研究;基于此,綜合運用Hbase API、批量存取、多線程等相關(guān)技術(shù),創(chuàng)新性地提出適用于小集群、 低成本風(fēng)電SCADA 系統(tǒng)的高性能數(shù)據(jù)存取算法;最后對該算法進行了實現(xiàn)與系統(tǒng)應(yīng)用。實際應(yīng)用表明,該算法較好地實現(xiàn)了小集群、低成本環(huán)境下的高性能數(shù)據(jù)存取,滿足應(yīng)用系統(tǒng)的實際需求。
HBase 具有數(shù)據(jù)存儲量大、面向列、稀疏存儲的特點。HBase 系統(tǒng)主要由HMaster 服務(wù)器和HRegion服務(wù)器群構(gòu)成,它遵循簡單的主從服務(wù)器體系結(jié)構(gòu)模型。具體到表格存儲而言,HBase 是以Region作為最小單位實現(xiàn)存儲負載,依據(jù)存儲量分裂成多個Region 模塊分配到不同的集群之中達到分布式存儲。
Hbase 數(shù)據(jù)存取又稱為“HBase 數(shù)據(jù)導(dǎo)入導(dǎo)出”。當(dāng)前,主流的HBase 數(shù)據(jù)導(dǎo)入導(dǎo)出方式有2 種,一種是“單條數(shù)據(jù)導(dǎo)入導(dǎo)出”,另一種是“批量數(shù)據(jù)導(dǎo)入導(dǎo)出”;同時,后者又可分為“HBase API 批量導(dǎo)入導(dǎo)出”與“MapReduce 批量導(dǎo)入導(dǎo)出”2 個方法。
以下就上述Hbase 數(shù)據(jù)存取3 種主要的數(shù)據(jù)導(dǎo)入導(dǎo)出方法的性能進行對比分析,測試環(huán)境為大數(shù)據(jù)軟件環(huán)境Hadoop2.7.6+HBase1.4.9,通過5 臺中低性能服務(wù)器在實際風(fēng)電場搭建小集群環(huán)境進行研究。因同條件下導(dǎo)出與導(dǎo)入性能差異不大,下面僅對數(shù)據(jù)導(dǎo)入展開研究:
方法一“單條數(shù)據(jù)導(dǎo)入”主要是對環(huán)境的隨機數(shù)據(jù)寫入能力進行分析,試驗通過多次運行Java代碼,發(fā)現(xiàn)單條數(shù)據(jù)導(dǎo)入運行效率保持在100 ms~250 ms 之間,實際的效率與實時CPU 性能關(guān)系密切。
方法二“HBase API 批量數(shù)據(jù)導(dǎo)入”主要是測試HBase 在寫入不同規(guī)模數(shù)據(jù)時所消耗的時間,導(dǎo)入數(shù)據(jù)為風(fēng)力發(fā)電實時秒級數(shù)據(jù),數(shù)據(jù)列固定118列,批量規(guī)模從10 條到500 萬條。批量數(shù)據(jù)寫入通過Java 代碼編寫,其中使用到BufferedMutator 類進行批量導(dǎo)入的容器管控。
方法三“MapReduce 批量數(shù)據(jù)導(dǎo)入”主要是測試MapReduce 在寫入不同數(shù)據(jù)規(guī)模時的性能情況,直接使用原生API 將文件進行導(dǎo)入。
上述3 種HBase 數(shù)據(jù)導(dǎo)入方法的測試結(jié)果對比如表1 所示,逐步增加導(dǎo)入數(shù)據(jù)的規(guī)模并記錄實際消耗時間。因為HBase 自帶的數(shù)據(jù)導(dǎo)入算法都是單線程實現(xiàn),所以無論是方法一還是方法二都無法滿足高性能數(shù)據(jù)導(dǎo)入要求,而且會出現(xiàn)CPU 負載高,HMaster 服務(wù)崩潰 (如表1 中,“-” 代表服務(wù)崩潰)。方法三由于是采用多線程實現(xiàn),其性能顯然優(yōu)于前兩種方式。但是,通過進一步對小集群研究發(fā)現(xiàn),MapReduce 其自啟動需要消耗一定的基礎(chǔ)資源,且其性能優(yōu)劣與集群規(guī)模大小呈正相關(guān),對于數(shù)據(jù)量到達千萬級及以上大小的大集群才能發(fā)揮比較好的性能表現(xiàn),而小集群數(shù)據(jù)規(guī)模通常保持在500 萬以下,因而,小集群規(guī)模環(huán)境下其性能優(yōu)勢并不明顯。因此,小集群想要獲得更高效的數(shù)據(jù)導(dǎo)入,并不能直接采用方法三“MapReduce 批量導(dǎo)入”,而需要設(shè)計一種新的算法,本文考慮對方法二“HBase API 批量數(shù)據(jù)導(dǎo)入”進行算法改進。新算法的設(shè)計目標是性能超越現(xiàn)有3 種主流HBase 數(shù)據(jù)導(dǎo)入方法中最好的方法三。
表1 HBase 數(shù)據(jù)導(dǎo)入性能對比Tab.1 HBase data import performance comparison
分析表1 可知,要想實現(xiàn)基于小集群的HBase高效數(shù)據(jù)導(dǎo)入算法,既要充分利用小集群的CPU 以及其它硬件資源,同時也要實現(xiàn)導(dǎo)入算法服務(wù)本身較低的資源占用。基于以上分析,現(xiàn)采用多線程與HBase 的原生API 算法二者相結(jié)合的方法,進行多線程文件數(shù)據(jù)讀取以及批量數(shù)據(jù)導(dǎo)入;同時依據(jù)服務(wù)器實時性能情況,進行資源負載均衡。
基于上述算法總體思路,設(shè)計高效數(shù)據(jù)存取算法的處理流程如圖1 所示。首先通過獲取文件,并對其是否已經(jīng)完成導(dǎo)入做好標記;接著獲取服務(wù)器的性能情況,依據(jù)實際的服務(wù)器性能給予不同的多線程開啟;然后對獲取的文件進行分解,依據(jù)HBase提供的原生API 進行批量導(dǎo)入;在導(dǎo)入的過程中對服務(wù)器性能進行監(jiān)控并做好負載均衡;最后判斷文件是否完全導(dǎo)入完畢,整個高性能導(dǎo)入算法結(jié)束。
圖1 基于HBase 的小集群高效數(shù)據(jù)存取算法流程Fig.1 High efficient data access algorithm flow chart of small cluster based on HBase
依據(jù)圖1 所示算法,基于現(xiàn)搭建的小集群環(huán)境,使用中小風(fēng)力發(fā)電廠常用的CSV 文件與數(shù)據(jù)庫DB 文件進行測試,測試結(jié)果如表2 所示。表中,第3列“新算法”是指圖1 所示算法,也即對表1 中的原“方法二”的改進算法。進一步將表2 中“新算法數(shù)據(jù)導(dǎo)入耗時”與表1 中原“方法三:MapReduce 批量數(shù)據(jù)導(dǎo)入耗時”進行對比分析,可以發(fā)現(xiàn)新算法導(dǎo)入性能有明顯提升,依然分別針對10~5000000 數(shù)據(jù)行數(shù),數(shù)據(jù)導(dǎo)入耗時分別減少17.3%~92.1%不等,平均減少約36.5%,如表2 所示。
進一步將新算法與原方法三“MapReduce 批量導(dǎo)入算法”的服務(wù)器性能情況作對比,分析其是否充足利用了服務(wù)器資源,測試結(jié)果如圖2 和圖3??梢园l(fā)現(xiàn),原方法三“MapReduce 批量導(dǎo)入算法”占用CPU 保持在50%左右,新算法保持在95%左右,顯然,新算法實現(xiàn)了對CPU 的充分利用。
表2 新算法數(shù)據(jù)導(dǎo)入性能及與原方法的對比Tab.2 Data import performance and comparison of new algorithm
圖2 原方法三“MapReduce 批量導(dǎo)入算法”執(zhí)行資源消耗情況Fig.2 Execution resource consumption of original MapReduce batch import algorithm
圖3 新算法執(zhí)行資源消耗情況Fig.3 New algorithm performs resource consumption
本文所研究的高性能存儲算法是基于長沙北斗開放實驗室下屬“風(fēng)能新技術(shù)開放實驗室”的“風(fēng)電場跨平臺中央監(jiān)控系統(tǒng)”(以下簡稱“系統(tǒng)”)為應(yīng)用環(huán)境,該系統(tǒng)軟硬件架構(gòu)如圖4 所示。由圖4 可以看出本系統(tǒng)是一個天然的小集群分布式架構(gòu),其無法直接套用大公司的高性能大集群存取方案,因而當(dāng)前不得不采取MySQL 數(shù)據(jù)庫存儲+文件存儲方式。系統(tǒng)監(jiān)控50 臺風(fēng)機,數(shù)據(jù)總量800 G/年,原系統(tǒng)在進行較大數(shù)據(jù)量存取時,經(jīng)常出現(xiàn)系統(tǒng)崩潰或者等待時間超過5 min 等問題,無法滿足實際應(yīng)用的需求。
本文通過對該系統(tǒng)原有系統(tǒng)架構(gòu)進行分析,在原有系統(tǒng)軟件架構(gòu)中增加“數(shù)據(jù)高性能處理區(qū)”,修改系統(tǒng)原有的“數(shù)據(jù)存儲分析區(qū)”內(nèi)容并搭建分布式數(shù)據(jù)庫HBase 存儲環(huán)境;將數(shù)據(jù)交互方式由直接從“數(shù)據(jù)存儲分析區(qū)”獲取數(shù)據(jù)(圖4 左部分空心舊通道)改為由“數(shù)據(jù)高性能處理區(qū)”獲取數(shù)據(jù)(圖4左部分實心新通道)。將本文設(shè)計的算法應(yīng)用于系統(tǒng)“數(shù)據(jù)高性能處理區(qū)”,系統(tǒng)搭建成功后,系統(tǒng)總體運行穩(wěn)定,系統(tǒng)的實時監(jiān)控模塊與高分辨率數(shù)據(jù)分析模塊性能優(yōu)化均十分明顯,其中,高分辨率數(shù)據(jù)分析模塊能夠?qū)崿F(xiàn)共兩個月時間范圍、秒級數(shù)據(jù)的實時查詢與波形圖顯示,滿足應(yīng)用的實際需要,如圖5 所示。
圖4 小集群風(fēng)力發(fā)電SCADA 系統(tǒng)軟硬件架構(gòu)圖Fig.4 Software and hardware architecture of SCADA system for small cluster wind power generation
圖5 風(fēng)電場跨平臺中央監(jiān)控系統(tǒng)“高分辨率數(shù)據(jù)分析模塊”數(shù)據(jù)高性能存取展示Fig.5 High performance data access display of“high resolution data analysis module” of wind farm cross-platform central monitoring system
小集群環(huán)境是現(xiàn)階段眾多風(fēng)力發(fā)電廠的主要特征,小集群風(fēng)力發(fā)電廠由于其成本與技術(shù)的劣勢無法滿足日益增長的高性能計算需求?;谝陨媳尘?,本文依托長沙北斗開放實驗室下屬風(fēng)能新技術(shù)開放實驗室的“風(fēng)電場跨平臺中央監(jiān)控系統(tǒng)”項目開展了基于小集群背景下風(fēng)電SCADA 系統(tǒng)高性能數(shù)據(jù)存儲算法的研究與優(yōu)化工作。論文對現(xiàn)有多種Hbase 數(shù)據(jù)存取方法的存取性能進行了深入對比分析,從原理中尋求小集群存儲優(yōu)化的解決方案,提出并實現(xiàn)了一個基于大數(shù)據(jù)存儲平臺Hbase、 適用于小集群低成本風(fēng)力發(fā)電SCADA 系統(tǒng)的高性能數(shù)據(jù)存取算法。應(yīng)用表明,該算法性能高效,能夠滿足小集群風(fēng)電監(jiān)控系統(tǒng)存取需要,因而具有較好的工程推廣價值。