張志強(qiáng)
【摘要】隨著電力系統(tǒng)仿真計(jì)算產(chǎn)生的數(shù)據(jù)量逐漸增多,對(duì)數(shù)據(jù)存儲(chǔ)的要求逐漸提升,電力系統(tǒng)人員希望采用大數(shù)據(jù)平臺(tái)對(duì)海量電網(wǎng)仿真計(jì)算文件進(jìn)行存儲(chǔ)。同時(shí)海量的電網(wǎng)仿真計(jì)算文件在 Hadoop 平臺(tái)上的檢索也很困難,給研究帶來了諸多難題。本文分析 Hadoop 的分布式文件系統(tǒng)在存儲(chǔ)和處理海量的電網(wǎng)仿真計(jì)算文件時(shí)出現(xiàn)的問題,并分析出現(xiàn)這些問題的原因。然后介紹電網(wǎng)仿真計(jì)算文件多層索引的總體架構(gòu)設(shè)計(jì),闡述了電網(wǎng)仿真計(jì)算文件多層索引技術(shù)的總體模塊設(shè)計(jì),以及各個(gè)模塊的功能設(shè)計(jì)。包括對(duì)電網(wǎng)仿真計(jì)算文件的合并設(shè)計(jì),以及電網(wǎng)仿真計(jì)算文件的全局索引和局部索引的設(shè)計(jì),為電網(wǎng)仿真計(jì)算文件多層索引技術(shù)的實(shí)現(xiàn)奠定基礎(chǔ)。
關(guān)鍵詞:電網(wǎng);多層索引技術(shù);架構(gòu)設(shè)計(jì)
1、前言
隨著電力系統(tǒng)仿真計(jì)算產(chǎn)生的數(shù)據(jù)量逐漸增多,對(duì)數(shù)據(jù)存儲(chǔ)的要求逐漸提升,電力系統(tǒng)人員希望采用大數(shù)據(jù)平臺(tái)對(duì)海量電網(wǎng)仿真計(jì)算文件進(jìn)行存儲(chǔ)。在眾多大數(shù)據(jù)平臺(tái)中,Hadoop 采用多臺(tái)廉價(jià)計(jì)算機(jī)組成集群,并具有良好的擴(kuò)展性和容錯(cuò)性,成為眾多項(xiàng)目首選的大數(shù)據(jù)處理平臺(tái)。HDFS是 Hadoop的分布式文件系統(tǒng),HDFS 有一個(gè)名字節(jié)點(diǎn)(Name Node)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)(Data Node)。
文件數(shù)據(jù)經(jīng)過分塊后存儲(chǔ)在 HDFS 的數(shù)據(jù)節(jié)點(diǎn)中,每一個(gè)文件在名字節(jié)點(diǎn)中都保存有 metadata 信息。所以當(dāng)電網(wǎng)仿真計(jì)算產(chǎn)生的數(shù)據(jù)結(jié)果文件有 10million 時(shí),由于每個(gè) block 塊默認(rèn)大小為 64M,對(duì)于文件大小遠(yuǎn)小于 64MB 的電網(wǎng)仿真計(jì)算文件來說,每一個(gè)電網(wǎng)仿真計(jì)算文件將對(duì)應(yīng)一個(gè) block 塊,將占用名字節(jié)點(diǎn) 3G 內(nèi)存。如果文件的數(shù)量再多一些的話,將會(huì)超過名字節(jié)點(diǎn)所能承受的極限,因?yàn)?Hadoop 是由若干普通廉價(jià)的計(jì)算機(jī)組成的集群。同時(shí)海量的電網(wǎng)仿真計(jì)算文件在 Hadoop 平臺(tái)上的檢索也很困難,給研究帶來了諸多難題。
2、系統(tǒng)總體設(shè)計(jì)
電網(wǎng)海量仿真計(jì)算文件多層索引技術(shù)是對(duì)海量的電網(wǎng)仿真計(jì)算文件在 Hadoop 平臺(tái)下處理前的預(yù)處理技術(shù),該項(xiàng)技術(shù)包括合并電力系統(tǒng)仿真計(jì)算數(shù)據(jù)文件模塊、Hadoop 自定義輸入分片模塊和建立電網(wǎng)仿真計(jì)算文件多層索引模塊。電網(wǎng)海量仿真計(jì)算多層索引技術(shù)在 Hadoop 平臺(tái)下的模塊圖如圖 1 所示。
電網(wǎng)仿真計(jì)算文件通過合并具有相同文件類型的文件來大量減小電網(wǎng)仿真計(jì)算文件的數(shù)量,從而達(dá)到減小 Name Node 節(jié)點(diǎn)內(nèi)存占用的效果,并通過自定義 Hadoop輸入分片使其特殊的數(shù)據(jù)結(jié)構(gòu)能夠在Hadoop分布式文件系統(tǒng)進(jìn)行分片處理,圖中“#”作為電網(wǎng)仿真計(jì)算文件在Hadoop平臺(tái)進(jìn)行分布式處理的分隔符。為了方便文件檢索與訪問,進(jìn)一步為所有電力系統(tǒng)仿真計(jì)算文件建立基于Trie樹數(shù)據(jù)結(jié)構(gòu)的多層索引。將電網(wǎng)仿真計(jì)算文件的合并條件“文件類型”作為仿真計(jì)算文件的全局索引,在此基礎(chǔ)上進(jìn)一步建立基于Trie樹的數(shù)據(jù)結(jié)構(gòu)的電網(wǎng)仿真計(jì)算文件名字的局部一級(jí)索引,并通過一級(jí)索引Trie樹的分裂建立電網(wǎng)仿真計(jì)算文件名首字母到一級(jí)索引分片的映射,電網(wǎng)仿真計(jì)算文件名字的首字母即為其局部二級(jí)索引。
為了實(shí)現(xiàn)項(xiàng)目需求,解決海量的電力系統(tǒng)仿真計(jì)算文件在分布式文件系統(tǒng)上進(jìn)行數(shù)據(jù)處理時(shí)的NameNode節(jié)點(diǎn)內(nèi)存占用過多問題以及提升電網(wǎng)仿真計(jì)算文件檢索效率的問題,設(shè)計(jì)了以下幾個(gè)模塊對(duì)數(shù)據(jù)文件進(jìn)行處理:合并電網(wǎng)仿真計(jì)算文件模塊,自定義Hadoop輸入分片模塊,和建立電網(wǎng)仿真計(jì)算文件的多層索引模塊。
合并電力系統(tǒng)仿真計(jì)算文件模塊負(fù)責(zé)將海量的電網(wǎng)仿真計(jì)算文件通過合并算法進(jìn)行合并。通過調(diào)研電網(wǎng)仿真計(jì)算文件的數(shù)據(jù)特點(diǎn),可根據(jù)電網(wǎng)仿真計(jì)算文件的文件類型進(jìn)行文件的合并。自定義Hadoop輸入分片文件通過重寫Hadoop的InputFormat類,自定義適用于電網(wǎng)仿真計(jì)算文件的split分隔符。建立多層索引模塊為電力系統(tǒng)仿真計(jì)算結(jié)果文件建立索引,其中全局索引是文件類型,局部索引借鑒Trie樹的數(shù)據(jù)結(jié)構(gòu),為電網(wǎng)仿真計(jì)算文件的文件名建立Trie樹索引。這樣設(shè)計(jì)的好處是利用Trie樹空間換時(shí)間思想減小檢索時(shí)間開銷。為了減小電網(wǎng)仿真計(jì)算文件索引臃腫帶來的檢索困難問題,接著為其建立以電網(wǎng)仿真計(jì)算文件名首字母的局部二級(jí)索引,配合進(jìn)行檢索。
3、電網(wǎng)仿真計(jì)算文件合并設(shè)計(jì)
通過調(diào)研分析,對(duì)電網(wǎng)仿真計(jì)算文件進(jìn)行適當(dāng)?shù)暮喜⒖梢杂行p小分布式文件系統(tǒng)中主節(jié)點(diǎn)的內(nèi)存占用。借鑒相關(guān)技術(shù)中的合并思想,本課題通過自定義的合并算法對(duì)海量電網(wǎng)仿真計(jì)算文件進(jìn)行合并。
由于BPA, PSASP, PSCAD等電力系統(tǒng)仿真計(jì)算軟件多種多樣,電力系統(tǒng)仿真計(jì)算的模型也是多種多樣,其產(chǎn)生的大量的電力系統(tǒng)方針計(jì)算數(shù)據(jù)可以稱之為海量。由電網(wǎng)仿真計(jì)算文件數(shù)據(jù)可得,電力系統(tǒng)仿真計(jì)算主要包括潮流計(jì)算和暫態(tài)穩(wěn)定計(jì)算,其產(chǎn)生的結(jié)果文件皆為單個(gè)文件體積很小的小文件。通過將這些電網(wǎng)仿真計(jì)算文件進(jìn)行適當(dāng)?shù)暮喜?,可以從宏觀上減少需要分布式文件系統(tǒng)處理的文件數(shù)目,進(jìn)而減小Block塊數(shù)目,那么它在NameNode節(jié)點(diǎn)上的元數(shù)據(jù)信息就得到減小,從而減小其占用的內(nèi)存。
通過分析電力系統(tǒng)仿真計(jì)算數(shù)據(jù)文件的文件類型,發(fā)現(xiàn)有一些不同格式的文件,例如JPg.格式、 .txt格式等等,按照仿真計(jì)算數(shù)據(jù)文件的文件類型進(jìn)行合并不僅能夠減小在HDFS中NameNode節(jié)點(diǎn)的內(nèi)存消耗,還可以將文件類型作為全局索引配合多層索引的建立,從而提高電網(wǎng)仿真計(jì)算結(jié)果文件的檢索效率。
電網(wǎng)仿真計(jì)算文件具體合并過程如下,新建一個(gè)文件路徑印用來存放合并后的電網(wǎng)仿真計(jì)算文件,新建一個(gè)字符串?dāng)?shù)組fl用來存放要合并的電網(wǎng)仿真計(jì)算文件,遍歷印路徑下的所有電網(wǎng)仿真計(jì)算文件,讀取它們的后綴名進(jìn)而得到電網(wǎng)仿真計(jì)算文件的文件類型,創(chuàng)建文件類型對(duì)應(yīng)的文件夾,并將屬于該類型的電網(wǎng)仿真計(jì)算文件進(jìn)行集合,具體流程如圖2所示,判斷該電網(wǎng)仿真計(jì)算文件的文件類型,判斷是否新建了該類型的字符串?dāng)?shù)組,若存在,則放入該字符串?dāng)?shù)組;若不存在,則新建該類型的文件集合。直到所有電網(wǎng)仿真計(jì)算文件被處理完成,即可完成合并操作。
4、電網(wǎng)仿真計(jì)算文件索引設(shè)計(jì)
電網(wǎng)仿真計(jì)算數(shù)據(jù)文件按照文件的類型進(jìn)行合并后,使用Hadoop的分布式文件系統(tǒng)進(jìn)行存儲(chǔ)和數(shù)據(jù)處理。HDF S的原理是將需要處理的文件塊自動(dòng)分成若干塊,這些數(shù)據(jù)塊分布在各個(gè)數(shù)據(jù)節(jié)點(diǎn)上。當(dāng)有一些需求需要檢索電網(wǎng)仿真計(jì)算數(shù)據(jù)文件時(shí),由于合并后的仿真計(jì)算文件與原仿真計(jì)算文件的對(duì)應(yīng)以及海量的文件僅憑文件類型很難進(jìn)行檢索,所以需要為其設(shè)計(jì)建立索引,方便進(jìn)行快速檢索。
如圖3所示是電網(wǎng)仿真計(jì)算文件的多層索引模塊圖,其中電網(wǎng)仿真計(jì)算文件根據(jù)文件后綴名進(jìn)行合并后交給HDFS進(jìn)行處理,合并后的電網(wǎng)仿真計(jì)算文件通過block分塊進(jìn)而存儲(chǔ)在數(shù)據(jù)節(jié)點(diǎn)上,NameNode節(jié)點(diǎn)中存儲(chǔ)著每個(gè)合并后的電網(wǎng)仿真計(jì)算文件數(shù)據(jù)塊的元數(shù)據(jù)信息。同時(shí),電網(wǎng)仿真計(jì)算文件的合并依據(jù):電網(wǎng)仿真計(jì)算文件的文件類型將作為全局索引,也將存儲(chǔ)于主節(jié)點(diǎn)的內(nèi)存中。為減小內(nèi)存壓力,電網(wǎng)仿真計(jì)算文件的局部索引存儲(chǔ)于數(shù)據(jù)節(jié)點(diǎn)的內(nèi)存中。
5、結(jié)論
本文分析了 Hadoop 的分布式文件系統(tǒng)在存儲(chǔ)和處理海量的電網(wǎng)仿真計(jì)算文件時(shí)出現(xiàn)的問題,并分析出現(xiàn)這些問題的原因。然后介紹電網(wǎng)仿真計(jì)算文件多層索引的總體架構(gòu)設(shè)計(jì),闡述了電網(wǎng)仿真計(jì)算文件多層索引技術(shù)的總體模塊設(shè)計(jì),以及各個(gè)模塊的功能設(shè)計(jì)。包括對(duì)電網(wǎng)仿真計(jì)算文件的合并設(shè)計(jì),以及電網(wǎng)仿真計(jì)算文件的全局索引和局部索引的設(shè)計(jì),為電網(wǎng)仿真計(jì)算文件多層索引技術(shù)的實(shí)現(xiàn)奠定基礎(chǔ)。
參考文獻(xiàn)
[1]黃阮明, 黃一超, 費(fèi)斐, et al. 電網(wǎng)規(guī)劃仿真自動(dòng)潮流計(jì)算軟件的設(shè)計(jì)[J]. 工業(yè)控制計(jì)算機(jī), 2018, v.31(06):53-54.
[2]吳蘇波. 變電站仿真培訓(xùn)系統(tǒng)電網(wǎng)計(jì)算模塊的開發(fā)[J]. 廣東科技, 2007(s2):123-124.
[3]梁文騰, 喬卉, 龔慶武, et al. 可擴(kuò)展性虛擬配電網(wǎng)仿真系統(tǒng)設(shè)計(jì)[J]. 電網(wǎng)技術(shù), 2010(8):102-107.
[4]姜文立. 論調(diào)度系統(tǒng)大電網(wǎng)離線仿真計(jì)算基礎(chǔ)工作相關(guān)問題[J]. 華中電力, 2010, 23(3):21-23.
[5]Steinmacher I ,? Wiese I S ,? Chaves A P , et al. Newcomers Withdrawal in Open Source Software Projects: Analysis of Hadoop Common Project[C]// Brazilian Symposium on Collaborative Systems. IEEE Computer Society, 2012.
[6]Cai X ,? Li F ,? Li P , et al. SLA-aware energy-efficient scheduling scheme for Hadoop YARN[J]. Journal of Supercomputing, 2017, 73(8):3526-3546.
[7]張海, 馬建紅. 基于HDFS的小文件存儲(chǔ)與讀取優(yōu)化策略[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2014(5):34-36.
[8]段隆振, 洪新利, 邱桃榮. 基于MapFile的HDFS小文件存取優(yōu)化[J]. 南昌大學(xué)學(xué)報(bào)(工科版), 2017, 39(2):175-178.
[9]趙曉南, 曾雷杰, 李戰(zhàn)懷. 一種基于塊級(jí)的存儲(chǔ)性能優(yōu)化方法[J]. 計(jì)算機(jī)科學(xué), 2009, 36(6):129-132.