基于海量电力实时数据的分布式管理系统的制作方法

文档序号:11918901阅读:192来源:国知局
基于海量电力实时数据的分布式管理系统的制作方法与工艺

本发明属于数据管理技术领域,涉及基于海量电力实时数据的分布式管理系统,主要利用大数据处理技术来实现。



背景技术:

电力企业每天产生海量的数据,其中电网实时数据体量最大。由于其直接表现了电网的生产运行状况,因此重要性也最高。对电网实时数据集中存储,集中分析,可以为电网调度提供辅助决策、分析电力设备和电力线路的安全性和可靠性,提升电网的安全运行管理水平。还可以对社会发布用户的电量、电价、负荷数据,实现用户积极参与电网互动,鼓励用户的用电消费。

当前,电力企业的实时数据存储在各个电力实时系统的实时数据库中,数据存储是分散的。例如,SCADA系统的实时数据存储在SCADA系统的实时数据库,电厂DCS系统的实时数据存储在电厂DCS系统的实时数据库。电力企业目前没有一个能够集中存储电力企业各种电力实时数据,并能够提供并行计算的数据库。这样造成如下的问题:

第一,各个电力实时系统建设时,所选用的实时数据库只考虑了应对本系统本身的查询和存储的计算负荷需求,没有考虑数据分析的计算压力,因此如果直接查询这些实时数据库,进行数据分析,有可能会引起这些电力实时系统的运行故障。

第二,电力实时数据分散存储在各个实时数据库,我们无法使用一个分析模型对于全地区的同类的实时数据进行统一的数据分析。例如,我们希望对电厂DCS系统的实时数据进行分析,以了解设备故障和设备超负荷运行之间的关系。但是全省有十个电厂,各个电厂用的DCS系统都是不同厂家的,使用的实时数据库以及实时数据的存储方式都不同。这样,我们必须针对这十个DCS系统编写十个数据分析程序,才可以完成数据分析。所以,将电力实时数据集中存储,将同类电力实时数据按照统一的数据存储模型进行存储,使用一个数据分析算法实现同类电力实时数据的数据分析是非常必要的。

第三,无法依照数据分析的需求对电力实时数据进行合理的存储和维护管理。电力实时数据是电力企业宝贵的数据资产,电力企业可以从各种分析角度,使用各种分析模型对电力实时数据进行数据分析,从中发现设备运行情况、电网状态、故障发生原因等信息。因此,电力实时数据需要保存足够长的时间,以充分对其进行分析利用。过期的电力实时数据应该有合理的导出归档的机制。当前,电力企业电力实时数据分散存储在各个电力实时系统的实时数据库中,各个电力实时系统有自己的一套实时数据过期和作废的机制,这些机制肯定各不相同,而且不符合电力数据分析对于数据管理的要求。所以,将电力实时数据集中存储,使用统一的数据存储管理规则是很必要的。

第四,电力实时系统的实时数据库不支持高并发查询和并行计算。电力实时数据可能会被很多的数据分析算法使用,还可能会被很多电力用户进行数据查询,因此要求存储电力实时数据的数据库具有高并发访问的能力,并且能够使用并行计算的方式提高查询和数据计算速度。但是电力实时系统的实时数据库不支持高并发查询和并行计算。

为了解决上述的问题,我们需要建立具有海量数据吞吐能力的电力实时数据存储平台。针对电力实时数据的特点,制定合理的数据存储模型,将各个电力实时系统的实时数据依据此数据存储模型进行数据转换,存储到此数据存储平台中。对外提供高速的、具有并行计算能力的、高并发性的数据查询和迭代计算接口,为各种实时数据分析模型提供基础的数据服务。



技术实现要素:

本发明的目的是提供基于海量电力实时数据的分布式管理系统,解决了海量的电力实时数据无法集中存储和分析处理的问题。由于电力实时数据的数据量非常庞大,一个省每天产生的电力实时数据量超过了30G。我们使用HDFS、HBASE、SPARK等大数据框架建立分布式数据库,以存储海量的电力实时数据。

分布式数据库是指利用高速计算机网络将物理上分散的多个数据库存储单元连接起来组成一个逻辑上统一的数据库。其基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据库存储节点上,以获得更大的存储容量和更高的并发访问量。分布式数据库支持PB级的海量数据存储,具有每秒百万条数据的写入速度,支持高速高并发的数据查询。在本项目中,我们使用HDFS、HBASE、SPARK来搭建分布式数据库。HDFS是分布式文件系统,运行于大型商用机集群。HBASE是基于HDFS的分布式的、按列存储的数据库。SPARK是一个通用的、高效的大数据计算平台。

为了达到上述目的,本发明的技术方案如下:

基于海量电力实时数据的分布式管理系统,包括:

分布式电力实时数据存储平台,所述分布式电力实时数据存储平台包括电力实时数据管理模块以及存储电力实时数据的分布式数据库;

所述电力实时数据管理模块将电力实时数据进行模型转换,所述模型转换将电力实时数据转换为符合分布式数据库的数据结构,模型转换后的电力实时数据存入分布式数据库中。

在本发明的一个优选实施例中,所述电力实时数据管理模块将一个测点一段时间内的若干条电力实时数据进行合并存储,且将合并存储后的电力实时数据进行模型转换为符合分布式数据库的数据结构。

在本发明的一个优选实施例中,所述模型转换前的电力实时数据的数据结构包括四个字段:测点ID、时间戳、点值类型、点值。

在本发明的一个优选实施例中,所述分布式数据库包括若干个服务器集群,相同测点ID的电力实时数据存储在一个服务器上。

在本发明的一个优选实施例中,还包括将外部系统与所述分布式电力实时数据存储平台联动的开发接口;所述外部系统调用开发接口进行数据查询和数据计算。

在本发明的一个优选实施例中,采用测点或/和时间作为查询条件进行数据查询时,将从分布式数据库中取得合并存储的电力实时数据解开为多条电力实时数据后,进一步筛选。

在本发明的一个优选实施例中,所述数据计算用于对筛选出的电力实时数据逐条进行迭代计算。

在本发明的一个优选实施例中,所述分布式电力实时数据存储平台存储了来自于各个电力实时系统的电力实时数据,其中电力实时数据的采样周期为几秒钟或者几分钟,每一个电力实时系统的电力实时数据的采样周期值是固定的。

在本发明的一个优选实施例中,所述电力实时数据包括遥测数据、遥信数据、遥控数据以及遥调数据;

所述遥信数据是远端设备发送到控制系统的开关量的动作信号;遥测数据是远端设备发送到控制系统的测量值信号;遥控数据是控制系统向远端设备发出的开合动作命令;遥调数据是控制系统向远端设备发出的参数设置和修改命令。

通过以上的技术方案,本发明达到的技术效果在于:

基于海量数据电力实时数据的分布式管理系统,是一个针对电力实时数据的特点而定制的分布式电力实时数据管理系统。其设计充分考虑了电力实时数据的数据量、数据类型、数据采集方式、数据存储方式、用户查询方式等特点,并针对这些特点进行了定制和性能优化,以提高本系统的数据存储速度、数据查询速度、系统易用性等性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明的平台架构图。

图2为本发明的电力实时数据-电力实时数据存储模型转换图。

图3为本发明的电力实时数据分散式存储逻辑图。

图4为本发明的电力实时数据提取数据流图。

图5为本发明的电力实时数据条件查询数据流图。

图6为本发明的电力实时数据迭代计算数据流图。

图7为本发明的HBASE表数据行的数据结构。

图8为本发明的HBASE的数据存储策略的逻辑图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

实施例1:

参照图1,基于海量电力实时数据的分布式管理系统,包括:

分布式电力实时数据存储平台,分布式电力实时数据存储平台包括电力实时数据管理模块以及存储电力实时数据的分布式数据库;

电力实时数据管理模块将电力实时数据进行模型转换,模型转换将电力实时数据转换为符合分布式数据库的数据结构,模型转换后的电力实时数据存入分布式数据库中。

具体地,使用电力实时数据管理模块对电力实时数据进行模型转换,是因为以下几点:

1、将电力实时数据转换为HBASE表数据行的数据结构:HBASE表的每一行必须有一个ROWKEY,而且不能重复。HBASE表可以具有多个列族,每个列族中可以包含若干个列;HBASE表不同行的同一个列族可以包含不同的列。下面以如图7所示的HBASE表数据行的数据结构进行描述:图7中,数据表中有两个列族,分别是info和roles;图7中第一行的roles列族包含了“ASF”、“Hadoop”、“Spark”这三个列,第二行包含了“Hive”和“Hadoop”这两个列。可见,电力实时数据必须转换为HBASE表数据行的数据结构,才可以保存到HBASE数据表中。

2、提高数据写入速度:在不影响数据检索便捷的前提下,尽量合并数据,减少数据行数,提高数据向HBASE的写入效率。电力实时数据管理模块可以将一个测点一段时间内的数百条实时数据合并为一行存储,因此提高了数据写入速度。

3、实现不同测点的实时数据被分散存储:将不同测点的实时数据均匀分散存储于分布式数据库服务器集群的各个节点,这样多个用户在进行数据查询和迭代计算时,各个存储节点都进行数据查询和迭代计算,这样有利于发挥集群分布式计算的优势,提高查询速度和计算速度。HBASE的数据存储策略如图8所示,HBASE表中,若干个数据行存储为一个Region,每个Region存储在分布式数据库集群的一个节点上。HBASE表初始时只有一个Region,Region中存储的数据行依照ROWKEY的排序进行存储。随着数据的插入,当数据行数超过一个Region的存储量限制后,会建立一个新的Region。如此下去,随着数据的插入,渐渐生成了多个Region,分布存储于集群的不同节点上。电力实时数据管理模块的ROWKEY生成策略,可以保证不同测点的实时数据在集群节点上分散存储。

4、提高数据读取速度:HBASE读取一条数据的速度高于读取多条数据,读取连续的多条数据的速度远高于读取分散的多条数据。电力实时数据管理模块将一个测点一段时间的数百条实时数据合并为一条数据进行存储,因此数据读取速度得到了提高。另外,电力实时数据管理模块可以保证一个测点时间上连续的多条数据会被连续存储在同一个集群节点上。使用者查询电力实时数据时,经常查询一个测点一段时间内的实时数据。这样,分布式数据库将读取连续的多条数据,数据读取速度得到了提高。

以图2、图3为例,详细叙述电力实时数据依照电力实时数据管理模块进行模型转换过程:

图2中左边部分的数据列表是一个测点一天的实时数据,右边部分是经过模型转换的结果数据。一个测点每五分钟采集一条实时数据,一天总共有288条实时数据。这些被合并成一条结果数据,此结果数据的数据结构符合HBASE数据行的数据结构要求,结果数据被保存到分布式数据库。由于288条实时数据被合并为一条数据进行存储,因此存储速度和读取速度相比保存和读取288条数据,得到了大幅提高。

图2中,转换结果数据ROWKEY的生成方式是,测点ID+空格+日期。数据行只有一个名称为VALUE列族,包含的列数等于一天中此测点实时数据条数。列名是此列对应于的实时数据发生时间的分钟数。使用这样的ROWKEY生成方式,数据会均匀存储到HBASE服务器集群的各个节点上。原因见图3。

图3中,一个测点一天的实时数据(每5分钟一条实时数据,总共288条),存储为HBASETable中的一条数据。“测点ID+空格+日期”的方式计算出HBASETable中的ROWKEY,HBASE使用此ROWKEY,在HBASETable的Region中找到插入位置(Region中数据存储依据ROWKEY排序),插入数据。

可以看出,由于各个实时系统的测点ID编码是分散的,因此这些测点数据会分散插入到HBASETable的各个Region中,进而被存储在分布式数据库集群的各个节点上。

由于不同测点的实时数据被分散存储到分布式数据库集群的各个节点上,因此,不同用户在查询计算时,查询的测点不同,所访问的数据存储节点也不同。这样就避免了查询计算时的热点问题。

需指出,图3中,一个测点连续多天的实时数据,因为生成的ROWKEY是连续的,因此会被连续存储在同一个Region中。这样,用户查询一个测点连续的多天的数据时,HBASE将读取Region连续的数据行,因此可以获得很高的查询速度。

实施例2:

与实施例1不同之处,在于实时数据的合并存储。

本实施例中,电力实时数据管理模块将电力实时数据进行模型转换优选电力实时数据管理模块将一个测点一段时间内的若干条电力实时数据进行合并存储,且将合并存储后的电力实时数据进行模型转换,转换为符合分布式数据库的数据结构。

其中,电力实时数据存储模型以及实时数据转换为存储模型的转换方式见图2所示。图2中左边部分是一个测点的一天内的遥测数据,右边部分是合并后的,可以存储到分布式数据库中的数据。

图2所示,一个测点一天的数据被合并成为一条合并数据,合并数据具有多个数据列,数据列的数量等于实时数据条数。数据列的列名是,0、5、10、…、1435,对应于各条实时数据的分钟数。合并数据的ROWKEY是根据测点ID和实时数据的日期计算得到的。算法是,测点ID+数据类型编码+空格+日期。数据类型编码是,遥信为“YX”,遥测为“YC”,遥控为“YK”,遥调为“YT”。例如,实时数据是遥测数据,测点ID是“132379”,时间是“2016年2月3日”,所以ROWKEY应该是“132379YC20160203”。

由图2可以知道,一个测点一天的实时数据被合并为一行数据,存储数据到分布式数据库。接下来的问题是,我们必须要保证各个测点的数据被分散存储到不同的服务器上。只有这样,各个应用系统进行数据查询时,才可以利用数据存储的分散性,利用集群各个服务器的并行计算能力,最大程度提升数据查询速度。

实施例3:

与实施例1和实施例2不同之处,在于模型转换前的电力实时数据的数据结构包括四个字段:测点ID、时间戳、点值类型、点值;分布式数据库包括若干个服务器集群,相同测点ID的电力实时数据存储在一个服务器上;以及,基于海量电力实时数据的分布式管理系统还包括将外部系统与分布式电力实时数据存储平台联动的开发接口;外部系统调用开发接口进行数据查询和数据计算。

本实施例中,采用测点或/和时间作为查询条件进行数据查询时,将从分布式数据库中取得合并存储的电力实时数据解开为多条电力实时数据后,进一步筛选。数据计算用于对筛选出的电力实时数据逐条进行迭代计算。

其中,本实施例的将外部系统与分布式电力实时数据存储平台联动的开发接口优选API接口,外部系统从各个电力实时系统中抽取电力实时数据,调用本平台的开发接口API的事务管理函数和数据存储函数,请求将电力实时数据存储到本存储平台中。

本平台的电力实时数据管理模块负责响应开发接口API的数据存储请求,接收开发接口API传送来的电力实时数据,使用电力实时数据存储模块对电力实时数据进行模型转换和数据存储。

图3描述了电力实时数据被合并后,是如何分散存储到服务器集群的不同节点上的。

实现数据存储的分散性,首先需要理解HBASE的数据存储机制。HBASE的数据存储机制是其特有的,与ORACLE这样的关系数据库是截然不同的。HBASE会把数据表中的数据划分为多个Region,各个Region存储在集群不同的服务器上。每个Region中,数据行依照ROWKEY排序存储。当我们插入新的数据时,HBASE依据此数据的ROWKEY,找到它对应的Region以及此Region中的插入位置,插入此条数据。具体方式如图8所示。

我们合并实时数据时,ROWKEY是根据测点ID、数据类型、时间计算得到的。这样,相同的测点,连续的时间数据将被连续存储在一个服务器上;不同测点的数据可能被存储在不同的Region,可能被存储在不同的服务器上。

我们在使用电力实时数据时,经常要取得某个测点一段时间内的数据。由于此测点连续时间段内数据存储时连续的,因此我们可以用HBASE的“SCAN”方法,一次读出一段时间内的数据,读取效率远远高于分多次读取、每次取得此测点一个时间点数据的读取方法。

不同的应用进行多种方式的数据分析时,需要使用的测点是不同的。因此当这些应用同时请求数据时,总的来看,需要很多测点的实时数据。由于数据存储是基于测点ID分散存储在多个服务器上的,所以,服务器集群的各个服务器节点将并行计算检索计算数据。这样,服务器集群的并行计算能力得到了发挥,计算速度和并发性非常好。

电力实时数据存储到本存储平台后,外部系统可以调用开发接口API的数据提取、SQL查询、数据扫描、迭代计算功能进行数据查询和数据计算。电力实时数据管理模块中的实时数据搜索模型、迭代计算模型负责响应开发接口API的查询和迭代计算请求。

图4和图5是实时数据搜索模型的实现方式数据流图。数据查询者(开发接口API)使用测点和时间作为查询条件进行查询,实时数据搜索模型根据实时数据存储模型,根据测点和时间计算出对应的ROWKEY,从分布式数据库中取得存储的数据。而后,需要将取得的合并数据解开为多条实时数据,再从中筛选并返回时间上符合查询要求的数据。对筛选出的数据,可以使用SPARKSQL进行进一步的条件查询。

实施例4:

与实施例1-3不同之处,在于数据计算用于对筛选出的电力实时数据逐条进行迭代计算。其中,电力实时数据定时刷新,刷新间隔为几秒钟或者几分钟,每一批电力实时数据之间刷新间隔是相等的。电力实时数据包括遥测数据、遥信数据、遥控数据以及遥调数据;

遥信数据是远端设备发送到控制系统的开关量的动作信号;遥测数据是远端设备发送到控制系统的测量值信号;遥控数据是控制系统向远端设备发出的开合动作命令;遥调数据是控制系统向远端设备发出的参数设置和修改命令。

图6是迭代计算模型的实现方式数据流图。根据测点、时间、约束条件筛选出实时数据后,使用SCALA语言进行迭代计算。选用SCALA语言实现迭代计算,是因为SCALA语言本身非常适合对一个集合的数据实现某个函数计算,实现同样的数据集合迭代计算的功能,如果使用JAVA语言,可能需要编写几页的程序,而使用SCALA语言,却只需要几句话。SCALA语言可以很方便地嵌入到JAVA代码中。

根据用户对于电力实时数据的使用方式,我们在迭代计算模型中内置了如下的迭代计算算法:

1)转换:将一个实时数据集的数据转换为另外一个数据类型的实时数据集。

2)过滤:实时数据集的数据进行条件过滤。

3)合并:将两个实时数据集合并为一个新的实时数据集。

4)取交集:取两个实时数据集的交集。

5)排序:根据实时数据值的大小对实时数据集的数据进行排序。

6)映射转换:将一个实时数据集的数据经过自定义函数的计算,得到一个新的实时数据集。

7)笛卡尔乘积:将两个实时数据集进行笛卡尔乘积操作,得到一个新的实时数据集。

8)去重:去掉一个实时数据集中的重复数据。

9)采样:规定抽样百分比、随机种子,对实时数据集进行采样。

实施例1-4的基于海量电力实时数据的分布式管理方法是:

步骤一、分布式数据库的构建

1.依据电力实时数据的特点构建分布式数据库

使用HBASE、SPARK、HDFS等大数据框架搭建分布式数据库。这些大数据框架是当前业界性能最好的、也是最流行的大数据技术框架,完全支持海量电力实时数据的数据高速写入,支持各类电力应用系统对于数据的高速高并发的查询要求。此分布式数据库是本系统的技术基础。

搭建分布式数据库的方法如图1所示,具体过程如下。

为分布式数据库建立分布式服务器集群,此服务器集群必须是3台以上物理服务器组成,每台服务器必须具备以下最低配置:

●2颗4核心或以上带超线程技术的x86CPU的服务器;

●32GB以上内存;

●4个300GB容量以上的硬盘作为数据存放硬盘;

●2个千兆及以上网卡。

集群的所有节点,必须运行于同一操作系统,可以安装RedHatEnterpriseLinux7.1。另外,还需要安装JDK,可以安装OracleJDK1.7。

而后,可以在Apache官网下载hadoop、hbase、spark的安装包,依照说明在所有集群节点上进行安装。

步骤二、电力实时数据分布式数据管理模型的实现

1.电力实时数据存储模型

数据存储方式对于分布式数据库的数据存储和数据检索速度的影响非常大,合理的数据存储方式的数据查询速度可能会比一个糟糕的数据存储方式的数据查询速度快几百倍。为了达到最佳的数据写入速度和数据查询速度,我们依据电力实时数据的特征,定制了专用的数据存储模型,实现实时数据的存储。此专用的分布式数据存储模型是本系统的技术核心所在。

2.电力实时数据搜索模型

由于电力实时数据是依据电力实时数据分布式存储模型进行存储的,所以,在数据查询时,需要依据数据查询条件和数据存储模型,计算出数据分散存储在分布式数据库中的存储位置,检索、提取、分解、转换、输出符合查询条件的数据。

此数据搜索模型可以大大简化使用者的使用难度,使用者不需要了解力实时数据分布式存储模型,就可以很容易的从本平台中查询和提取实时数据。

3.常用迭代计算模型的实现

迭代计算模型的作用是,依据给定的算法,从分布式数据库中查询电力实时数据,并对查询出的实时数据逐条进行迭代计算。

此迭代计算模型可以大大简化使用者的使用难度,使用者不需要了解力实时数据分布式存储模型,不需要编写复杂的迭代算法实现程序,就可以很容易的从本平台中查询和提取实时数据,逐条进行迭代计算。

步骤三、提供专用的应用开发API

图1中的实时数据抽取服务,是一个外部应用,负责从各个系统中抽取实时数据,使用本平台的应用开发API进行数据保存。本平台只负责接收通过API接口函数接收数据进行保存;通过API接口函数给出外部系统需要查询的数据。

1.专用的电力实时数据分析计算API

我们提供了专用的电力实时数据分析计算API。使用这些API,可以将电力实时数据保存到本系统中;可以查询本系统中存储的电力实时数据;进行数据分析和迭代计算。

这些API是依据电力实时数据的存储模型、电力实时数据搜索模型、电力实时数据迭代计算模型定制的。同时,本实时数据分析计算API的设计也考虑了用户使用电力实时数据的常见使用方式和使用习惯。

2.事务管理

事务管理功能的目的是保证对于海量电力实时数据操作的完整性。在使用API进行数据存储时,事务管理功能可以保证一批电力全部保存到分布式数据库,不会出现因为某种异常,只有一部分电力实时数据保存到分布式数据库的情况;在删除数据时,可以保证需要删除的实时数据全部从分布式数据库中被删除。

HBASE、HDFS、SPARK这些大数据框架本身不具备此事务管理功能。但是,事务管理功能对于电力实时数据的存储和分析却是非常必要的。因此我们根据电力实时数据使用方式的特点,实现了此事务管理功能。

本平台使用缓存和事务日志来实现事务的完整性。数据存储时,首先将要进行的若干条数据的保存操作写入缓存文件,而后依据缓存文件开始进行数据存储。每存储完一条数据,就在事务日志里记录下当前的存储进度,全部保存成功后,清除缓存文件和事务日志文件的内容。

如果因为异常发生服务器重启,重启后,本平台会扫描事务日志文件和缓存文件。如果发现有未完成的数据保存工作,就依照事务日志文件中记录的处理进度,继续进行数据存储。

删除数据的事务管理实现方式同上。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1