张志强
【摘要】随着电力系统仿真计算产生的数据量逐渐增多,对数据存储的要求逐渐提升,电力系统人员希望采用大数据平台对海量电网仿真计算文件进行存储。同时海量的电网仿真计算文件在 Hadoop 平台上的检索也很困难,给研究带来了诸多难题。本文分析 Hadoop 的分布式文件系统在存储和处理海量的电网仿真计算文件时出现的问题,并分析出现这些问题的原因。然后介绍电网仿真计算文件多层索引的总体架构设计,阐述了电网仿真计算文件多层索引技术的总体模块设计,以及各个模块的功能设計。包括对电网仿真计算文件的合并设计,以及电网仿真计算文件的全局索引和局部索引的设计,为电网仿真计算文件多层索引技术的实现奠定基础。
关键词:电网;多层索引技术;架构设计
1、前言
随着电力系统仿真计算产生的数据量逐渐增多,对数据存储的要求逐渐提升,电力系统人员希望采用大数据平台对海量电网仿真计算文件进行存储。在众多大数据平台中,Hadoop 采用多台廉价计算机组成集群,并具有良好的扩展性和容错性,成为众多项目首选的大数据处理平台。HDFS是 Hadoop的分布式文件系统,HDFS 有一个名字节点(Name Node)和多个数据节点(Data Node)。
文件数据经过分块后存储在 HDFS 的数据节点中,每一个文件在名字节点中都保存有 metadata 信息。所以当电网仿真计算产生的数据结果文件有 10million 时,由于每个 block 块默认大小为 64M,对于文件大小远小于 64MB 的电网仿真计算文件来说,每一个电网仿真计算文件将对应一个 block 块,将占用名字节点 3G 内存。如果文件的数量再多一些的话,将会超过名字节点所能承受的极限,因为 Hadoop 是由若干普通廉价的计算机组成的集群。同时海量的电网仿真计算文件在 Hadoop 平台上的检索也很困难,给研究带来了诸多难题。
2、系统总体设计
电网海量仿真计算文件多层索引技术是对海量的电网仿真计算文件在 Hadoop 平台下处理前的预处理技术,该项技术包括合并电力系统仿真计算数据文件模块、Hadoop 自定义输入分片模块和建立电网仿真计算文件多层索引模块。电网海量仿真计算多层索引技术在 Hadoop 平台下的模块图如图 1 所示。
电网仿真计算文件通过合并具有相同文件类型的文件来大量减小电网仿真计算文件的数量,从而达到减小 Name Node 节点内存占用的效果,并通过自定义 Hadoop输入分片使其特殊的数据结构能够在Hadoop分布式文件系统进行分片处理,图中“#”作为电网仿真计算文件在Hadoop平台进行分布式处理的分隔符。为了方便文件检索与访问,进一步为所有电力系统仿真计算文件建立基于Trie树数据结构的多层索引。将电网仿真计算文件的合并条件“文件类型”作为仿真计算文件的全局索引,在此基础上进一步建立基于Trie树的数据结构的电网仿真计算文件名字的局部一级索引,并通过一级索引Trie树的分裂建立电网仿真计算文件名首字母到一级索引分片的映射,电网仿真计算文件名字的首字母即为其局部二级索引。
为了实现项目需求,解决海量的电力系统仿真计算文件在分布式文件系统上进行数据处理时的NameNode节点内存占用过多问题以及提升电网仿真计算文件检索效率的问题,设计了以下几个模块对数据文件进行处理:合并电网仿真计算文件模块,自定义Hadoop输入分片模块,和建立电网仿真计算文件的多层索引模块。
合并电力系统仿真计算文件模块负责将海量的电网仿真计算文件通过合并算法进行合并。通过调研电网仿真计算文件的数据特点,可根据电网仿真计算文件的文件类型进行文件的合并。自定义Hadoop输入分片文件通过重写Hadoop的InputFormat类,自定义适用于电网仿真计算文件的split分隔符。建立多层索引模块为电力系统仿真计算结果文件建立索引,其中全局索引是文件类型,局部索引借鉴Trie树的数据结构,为电网仿真计算文件的文件名建立Trie树索引。这样设计的好处是利用Trie树空间换时间思想减小检索时间开销。为了减小电网仿真计算文件索引臃肿带来的检索困难问题,接着为其建立以电网仿真计算文件名首字母的局部二级索引,配合进行检索。
3、电网仿真计算文件合并设计
通过调研分析,对电网仿真计算文件进行适当的合并可以有效减小分布式文件系统中主节点的内存占用。借鉴相关技术中的合并思想,本课题通过自定义的合并算法对海量电网仿真计算文件进行合并。
由于BPA, PSASP, PSCAD等电力系统仿真计算软件多种多样,电力系统仿真计算的模型也是多种多样,其产生的大量的电力系统方针计算数据可以称之为海量。由电网仿真计算文件数据可得,电力系统仿真计算主要包括潮流计算和暂态稳定计算,其产生的结果文件皆为单个文件体积很小的小文件。通过将这些电网仿真计算文件进行适当的合并,可以从宏观上减少需要分布式文件系统处理的文件数目,进而减小Block块数目,那么它在NameNode节点上的元数据信息就得到减小,从而减小其占用的内存。
通过分析电力系统仿真计算数据文件的文件类型,发现有一些不同格式的文件,例如JPg.格式、 .txt格式等等,按照仿真计算数据文件的文件类型进行合并不仅能够减小在HDFS中NameNode节点的内存消耗,还可以将文件类型作为全局索引配合多层索引的建立,从而提高电网仿真计算结果文件的检索效率。
电网仿真计算文件具体合并过程如下,新建一个文件路径印用来存放合并后的电网仿真计算文件,新建一个字符串数组fl用来存放要合并的电网仿真计算文件,遍历印路径下的所有电网仿真计算文件,读取它们的后缀名进而得到电网仿真计算文件的文件类型,创建文件类型对应的文件夹,并将属于该类型的电网仿真计算文件进行集合,具体流程如图2所示,判断该电网仿真计算文件的文件类型,判断是否新建了该类型的字符串数组,若存在,则放入该字符串数组;若不存在,则新建该类型的文件集合。直到所有电网仿真计算文件被处理完成,即可完成合并操作。
4、电网仿真计算文件索引设计
电网仿真计算数据文件按照文件的类型进行合并后,使用Hadoop的分布式文件系统进行存储和数据处理。HDF S的原理是将需要处理的文件块自动分成若干块,这些数据块分布在各个数据节点上。当有一些需求需要检索电网仿真计算数据文件时,由于合并后的仿真计算文件与原仿真计算文件的对应以及海量的文件仅凭文件类型很难进行检索,所以需要为其设计建立索引,方便进行快速检索。
如图3所示是电网仿真计算文件的多层索引模块图,其中电网仿真计算文件根据文件后缀名进行合并后交给HDFS进行处理,合并后的电网仿真计算文件通过block分块进而存储在数据节点上,NameNode节点中存储着每个合并后的电网仿真计算文件数据块的元数据信息。同时,电网仿真计算文件的合并依据:电网仿真计算文件的文件类型将作为全局索引,也将存储于主节点的内存中。为减小内存压力,电网仿真计算文件的局部索引存储于数据节点的内存中。
5、结论
本文分析了 Hadoop 的分布式文件系统在存储和处理海量的电网仿真计算文件时出现的问题,并分析出现这些问题的原因。然后介绍电网仿真计算文件多层索引的总体架构设计,阐述了电网仿真计算文件多层索引技术的总体模块设计,以及各个模块的功能设计。包括对电网仿真计算文件的合并设计,以及电网仿真计算文件的全局索引和局部索引的设计,为电网仿真计算文件多层索引技术的实现奠定基础。
参考文献
[1]黄阮明, 黄一超, 费斐, et al. 电网规划仿真自动潮流计算软件的设计[J]. 工业控制计算机, 2018, v.31(06):53-54.
[2]吴苏波. 变电站仿真培训系统电网计算模块的开发[J]. 广东科技, 2007(s2):123-124.
[3]梁文腾, 乔卉, 龚庆武, et al. 可扩展性虚拟配电网仿真系统设计[J]. 電网技术, 2010(8):102-107.
[4]姜文立. 论调度系统大电网离线仿真计算基础工作相关问题[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的小文件存储与读取优化策略[J]. 计算机系统应用, 2014(5):34-36.
[8]段隆振, 洪新利, 邱桃荣. 基于MapFile的HDFS小文件存取优化[J]. 南昌大学学报(工科版), 2017, 39(2):175-178.
[9]赵晓南, 曾雷杰, 李战怀. 一种基于块级的存储性能优化方法[J]. 计算机科学, 2009, 36(6):129-132.