智能电网是电网的智能化, 通过将信息技术、通信技术、盘算机技术与原有的电网高度紧密地荟萃到一起的新型电网, 实现电网的可靠、宁静、经济、高效、情况友好和使用宁静的目标。可是随着电网智能化的不绝提高, 其数据量也随之以指数级的增长。面对这海量数据的存储的难题, 海内已有电力调理系统的建设大多接纳通例的解决计划, 即接纳腾贵的大型效劳器为基础, 通过古板的关系数据库的方法治理, 并且以数据库分片的方法存放到磁盘阵列中的形式[1]。这导致系统的扩展升级较为困难, 用度十分高昂, 且整个系统�?榧漶詈闲越锨�, 难以满足电网智能化所要求的高效、可靠、经济的目标[2]。
云存储能够解决智能电网对海量数据的存储的难题, 最大限度地整合系统的存储能力, 减少电网智能化的本钱, 大幅提高目今系统的整体性能, 对智能电网的生长起到巨大的推行动用。云盘算虽然在智能电网方面未见成型的系统[3,4], 但已经在其他领域获得了大宗的应用[7,8], 并且智能电网方面的云盘算系统也在架构设计开发阶段了[9], 可是Hadoop集群在处理电网大数据上具有巨大的优势[1,12]。
Hadoop作为一个开源的云盘算基础框架, 一个漫衍式系统基础架构, 可以使用户充分利用集群的威力高速运算和存储, 具有可靠的数据存储和处理能力、易于扩展的盘算机集群、以高容错性的大都据副本、以软件开源及廉价盘算机集群带来的低本钱等优势, 正成为信息领域研究的热点。
HBase (Hadoop Database) , 是一个在HDFS系统基础上的高可靠性、高性能、面向列、可伸缩的漫衍式No SQL数据库, 是谷歌公司Big Table技术的开源项目[15], 利用HBase技术可在廉价PC效劳器集群上搭建起大规模非关系结构化快速读写的存储货仓。
Map Reduce作为并行处理大数据集的软件框架, 在Hadoop上获得了实现[7]。它卖力分派事情以及与用户程序进行通信, 通过把对数据集的大规模操作分发给网络上的每个节点上, 实现数据的漫衍式处理。
智能电网情况下电力数据具有:规模大、类型多、价值密度低和变革快的特点[5], 凭据数据的爆发源大致分为三类:一是电网运行和设备检测或监测数据;二是电力企业营销数据, 如交易电价、售电量、用电客户等方面的数据;三是电力企业治理数据[5]。因此随着时间的增长, 存储电网数据所需的空间将越来越大, 同理在盘问数据时也将更为费时辛苦。
针对上述智能电网数据的特点, 结合Hbase漫衍式数据库稀疏存储、自动切分数据、提供高并发读写操作等特点, 构建出智能电网数据云存储系统。
如图1所示为云存储系统的结构图, 整个系统由存储客户端、Hadoop效劳器集群、盘问客户端三部分组成。数据源包括智能电网中的发电、变电、输电、用电、调理、销售、财务等数据, 由种种监控治理设备或终端经由以太网等网络传输, 并经由存储客户端存储到集群当中。系统焦点是以大宗廉价的PC机为基础, 通过Hadoop漫衍式框架搭建的效劳器集群, 由少量的Name Node (卖力维护文件系统命名空间) 和大宗的Data Node (卖力存储数据块) 组成。图1左边是存储客户端, 卖力将上传的数据映射成Hbase数据库Htable表项, 并且存储到Hbase数据库中;右边为盘问效劳器, 卖力处理海量数据的盘问, 为数据剖析应用提供海量数据基础。
通过虚拟化技术, 在装置Windows 7操作系统的PC机上, 装置VMware Workstation 10, 虚拟Linux情况, 形成一个处于10.10.11.0段的局域网络。在各机上装置JDK、SSH、Hadoop-0.20.2以及Hbase-0.90.5, 完成搭建一个完全漫衍模式下的Hadoop集群, 最后再在各机上装置Zookeeper-3.3.4来治理Hadoop集群。
创立Hbase表时需要确定表的结构和表的属性。表的结构有三种基本类型包括:行要害字 (Row Key) 、时间戳 (Time Stamp) 和列族 (Column Family) 。其中行要害字由用户ID (类型为32位二进制) 、数据存入时间 (Datatime类型) 、数据类型 (String类型) 、数据行ID (类型64位二进制) 四个部分组成的字节数组, 由Row Key生产器生成。时间戳凭据输入数据的时间戳而定, 若数据为静态数据自己无时间戳则由存入数据库时间为时间戳的值。列族, 利用其稀疏和动态创立列的特性, 凭据输入文件描述的工具动态创立列并且把数据存到对应列中。而表的属性主要用到的有:数据行最大版本数, Hbase通过保存旧版本以预防误操作, 在这由于数据被修改的可能性较小故设为3;压缩算法, 使用snappy算法, 其压缩效率与lzo相近但解压效率远高于Izo, 使数据盘问速度加速。
实验以调理系统向云存储系统进行数据上传为例, 将一台PC机作为调理系统数据爆发端, 将满足国标DLT890[12]标准 (转化自IEC系列标准) [6,11]的数据上传到集群。其中数据包括了地舆 (GIS) 信息、电力设备和线路信息、财务信息、负载信息、量测信息、电力�;ば畔ⅰ⑸璞复⒈赣胨鸷男畔ⅰ⒃げ饧凹苹畔⒌�[14], 这些信息数据以通用信息模型及其拓展模型为模板形成, 并且通过RDF (Resource Description Framework) 网络资源描述语言[10]的方法描述, 如图2所示。
在实验里, 存储客户端凭据用户信息和相关配置信息创立配置信息并且初始化Row Key工厂以及创立数据行上传缓冲区HTable Pool, 然后将上传文件中的数据映射为数据行存放到上传缓冲区中, 当缓冲区存放的数据行抵达一定的行数再提交实行稀疏的磁盘存储, 如表1所示, 且数据项中可以含有空的列项, 并且为空的数据项不占用任何存储空间。由于HTable是有序的且Hbase具有自动切分数据的能力, 故只需控制存储数据行的Row Key不连续递增, 就能把数据行均匀的存到集群机械上, 坚持机械负载的均衡, 制止了新数据扎堆存储到相同的机械上降低整个存储系统的I/O性能的现象。
上述数据上传的详细历程如图3所示, 其中上传缓冲区通过HTable Pool类对上传的数据行进行缓冲和治理, 除此之外通过建立上传文件流行列实现用户的多文件上传操作。
Hbase轻量化地集成了Hadoop中的Map Reduce并行运算模型[9], 并且凭据自身的特点突出优化了其表盘问的效率以及提出了基于Map Reduce的表盘问函数。因此用户在盘问时主要设计的是Table Input Format、Table Mapper、Table Reducer、Table Output Format四个函数[8], 其整体盘问历程如图4所示。
1) Table Input Format函数, 卖力将数据以表的形式通过表支解成为Splits, 然后提交给Map函数。
2) Table Mapper函数, 卖力处理Table Input Format函数提交的Splits, 配置Row Key值的规模、该数据项的版本、过滤器等设置, 确定命据查找的条件并创立扫描读入工具Scan, 最后将盘问到的数据交给Table Reducer函数。
3) Table Reducer函数, 卖力对盘问到的数据进行剖析处理。实验中由于无特殊应用需求, 只对盘问数据进行了排序, 提交到Table Output Format函数。
4) Table Reducer个数配置, 通过配置Table Reducer个数能够调理H a d o o p集群的负载以及该Map Reduce任务的处理速度, Table Reducer个数在很洪流平上影响整个Map Reduce任务的效率。
5) Table OutputFormat函数, 除了负载汇总Table Reducer函数处理完的数据以外, 还提供了底层刷新的机制, 大大地增加了大宗数据在相界面泛起时的速度。
图4 盘问历程
本文的所有实验均在实验室搭建的Hadoop平台上运行。平台有9个节点组成, 均为廉价PC机, 每个节点的物理配置为双核CPU, 主频为2.0MHz, 内存为2G, 网络带宽100Mbps局域网, 硬盘为100G, Hadoop版本为0.20.205, Hbase版本为0.90.5, 数据行最大版本数为3。
实验是在集群无其他任务的条件下, 使用测试客户端以差别的配置测试Hbase的I/O性能, 以获得Hbase的I/O性能最优时Hbase的配置。其中影响Hbase的I/O性能的主要因素是要在集群上开几多个并行进程来处理盘问和剖析处理任务。
1) 实验中只改变Map Reduce的并行进程个数 (即改变每个Input Split的巨细) , 坚持其他条件稳定, 创立盘问170万行数据的任务并获取任务运行时间, 结果如图5所示。
2) 控制Map Reduce的并行进程个数 (Map和Reduce任务均为18个) 及其他条件稳定, 只改变盘问数据行的数量, 从10万行到350万行, 并获取任务运行时间, 结果如图6所示。
由上述两组实验可以看出, 每个Map Reduce任务的并行进程个数太少时集群资源没用充分地利用盘问速度降低;而并行进程个数太多时, 虽然数据处理的速度有所增加, 但却浪费了大宗的时间在进程创立和节点通讯上, 反而得不偿失;除此之外如果每个进程处理的数据过多会大宗占用节点内存, 导致该节点无法处理别的进程, 降低了效率。因此凭据上述两个实验得出在集群用18个进程且每个进程生命周期为20秒 (即处理约170行数据) 时获得较好的效率。故关于本集群, Map Reduce的并行进程个数应设置为[盘问数据行数/90000]+1。这样设置虽然牺牲了集群的小部分任务处理速度, 可是却使集群在多任务高负载运行下包管每个任务的处理速度。
实验是在集群无其它任务运行且Map Reduce配置相同的条件下, 使用测试客户端对Hbase进行写入数据和盘问数据, 将同样的数据放到Oracle系统 (四核CPU, 8GB内存, 硬盘650GB) 里盘问并统计时间。
由上表2可以看出, 当数据量低于80万行时, 单机效劳的古板Oracle数据库有很大的优势;可是随着盘问数据量的增大, 集群Hbase数据库的优势越来越明显。可是当在大宗数据入库时, 两种数据库系统写入速度都不太理想, 不过针对这一问题, Hbase也提供了一种与数据库文件导入类似的以Hfile (凭据Hbase数据花样存储的文件花样) 的方法入库, 其写入速度与HDFS速度一样[13], 并且在文件花样转换时, 还能通过Map Reduce的方法利用集群的整体性能快速地将数据转换为Hfile。综上, 该集群很是适合存储大规模的存储次数频繁但每次数据量未几的智能电网大数据, 且在电网大数据处理上具有快速、可靠、廉价的优势。
本文研究了基于Hadoop的智能电网数据云存储系统, 首先剖析智能电网数据的特点, 利用Hbase漫衍式数据库的特点, 设计并实现了智能电网数据云存储系统。搭建了具有9个节点的廉价PC机组成的Hadoop集群, 然后开发了基于Hbase以及Map Reduce的存储和盘问客户端, 并且对集群进行了大宗的实验, 包括Map Reduce配置实验和与HDFS性能比较实验, 标明了本集群适合应用于智能电网大数据的存储, 并且提供了快速处理大数据的能力, 在行业电网数据剖析中具有快速、有效、可靠、廉价的优势。
【本文标签】
【责任编辑】yd2333云顶电子游戏云仓