王 军1,韩林峰1,侯 宾2
(1.河南许继仪表有限公司, 河南 许昌 461000;2. 北京邮电大学 电子工程学院, 北京 100876)
摘 要: 电力系统的用采数据具有结构复杂、数据量庞大和增量迅速等典型大数据特点,关系型数据库将无法应对其未来发展。基于Hadoop和关系型数据库混合构架,提出新型用采数据服务架构。对平台的高可用性、系统监控、IaaS部署等进行分析,提升了系统 的可靠性,降低了运维难度。提出了可扩展的数据预处理过程和数据质量管理模型,保障了数据服务质量,提高了系统的易用性。测试结果表明,服务架构能够提供高性能、高质量的数据服务。
关键词:电力用采数据;数据服务;Hadoop;数据质量管理
0 引言
随着电力系统逐步走向自动化和智能化,传统的用电数据采集也由人工抄表转变为远程自动抄表。目前,我国智能电表数量已超过三亿块,用户用电信息采集频率更加频繁,且电表和主站之间的数据通信是双向互动的,即包括信息采集也包括任务下发与控制等,这对用电信息的采集、存储、查询、分析等全生命周期的数据处理能力提出了更高的要求,交互数据可以轻易达到TB甚至PB等级,省级电力公司的用采增量数据也可达到上百GB或TB等级[1,2]。
1 电力用采数据管理系统的现状
很多省市电力公司已构建起了相应的数据管理系统,并大多采用关系型数据库构建数据平台。但由于其对横向扩展能力较差,无法有效支持数据的快速增长和类型扩展,难以对大量复杂数据进行有效管理和应用分析[9]。
随着Hadoop和NoSQL等分布式技术的发展,对TB甚至PB等级的数据进行实时查询、统计和深度挖掘成为可能[3~5]。有文献对Hadoop技术在电力相关领域的应用进行了研究和测试,但是企业界真正形成的实用系统还较少。其原因主要如下:
首先,存在开发难度。Hadoop体系的适用场景、设计理念和传统关系型数据库有很大差异,且对通常的编程接口和方法的支持还不够完善。如果大范围用Hadoop代替现有的成熟关系型数据库,会带来适用性、稳定性和适配等难题。
其次,存在运维难度。分布式的Hadoop系统的部署、监控和运维方式和单机的关系型数据库差异较大,存在更多的高可用性、监控等需求,而传统电力业务人员和运维人员对这些方法并不熟悉[6]。
根据当前电力企业在用采数据系统建设的突出矛盾和发展趋势,提出基于Hadoop和关系型数据库混合技术,构建用采数据管理系统和大数据服务平台[7]。屏蔽底层技术的复杂性,提供平台的高可用性保障和运维监控方法,提供统一的、可扩展的数据清洗和预处理方法[8],提供易用的数据查询和分析接口,并提供数据质量管理和统计分析等新业务内容,以及提供数据的高可用性、维护监控、预处理、使用接口和数据质量管理内容。
2 混合数据服务平台设计
2.1 平台架构设计
基于云计算的海量用电信息混合存储技术架构如图1所示。
采用HDFS与关系数据库相结合的混合存储,关系数据库主要存储修改操作较为频繁的业务交易数据,以及档案数据和告警事件等;云存储架构主要存储采集的电量、负荷等业务数据,当现有集群规模无法满足用电信息的增量存储时,可直接增加节点,实现动态横向扩展,以保障海量采集数据的稳定性和可靠性,为其他智能用电应用系统提供良好的数据支撑。
终端采集的原始数据经过清洗、解析和分类,转化成基础业务数据、存入HDFS。大数据管理引擎负责对海量数据的装载、写入、查询及处理等。采集终端上传的数据实质是半结构化数据,并且是多种业务内容的混合数据,利用MapReduce的并行处理能力,快速、可靠、稳定地完成半结构化数据与业务系统档案数据的语义关联,从而为用电信息采集业务应用系统提供完业务分类。
在数据处理流程上,原始数据经过分类、处理和分析之后,根据其特点,小数据集导入到关系型数据库,大数据集导入HBASE表格,在业务系统建设方面,只需要重构少量数据接口和业务模块,即可完成系统整体性能的提升。对于档案类、模型类等数据,仍然存放在关系型数据库,并可以通过Web Service、JDBC、ODBC、SQL等常见技术进行访问和调用,原有的业务系统不会遭到彻底的推翻和重构,在提高系统性能的同时,最大限度地避免了升级的风险。
Hadoop存储和关系型存储之间存在数据交换需求。Hadoop需要从关系型数据库读入档案类数据(例如用户信息),其次Hadoop对原始数据的处理结论,会导入到关系型数据库,以方便业务使用。采用开源Sqoop组件,通过MapReduce方式,实现数据的导入导出,在数据导入导出过程中需要保障数据的主键唯一性,并切断关系型数据库的外键联系,以适应两种不同的数据结构。
对于需要进行业务查询的大数据集(单表上亿条目),需要将数据集导入的HBASE,利用其分布式检索能力,实现超大数据集的实时查询。Hadoop可以通过批量导入的方法将数据写入HBASE,写入时需要对数据主键进行校验和优化设计,根据用采数据的特点,采用哈希后的“表计编号+时间+数据类型”作为数据表主键,即可以保持数据的唯一性,也可确保数据的随机查找速度。
2.2 平台高可用性设计
Hadoop本身具备机架感知、数据块多副本等子节点高可用性(HA)机制,但对于主节点的保障机制较差。较早前Hadoop并不提供Namenode的高可用性保障,只是提供了对元数据(持久化元数据fsimage和增量log数据)的数据备份机制,如SecondNamenode等。
新版本Hadoop支持对Namenode进行在线备份和自动角色恢复。其主要思路是把主节点元数据信息存储在一个网络存储位置,当出现活跃主节点(Active Namenode)单点故障的时候,备用主节点(Standby Namenode)会接管数据并提升自己为活跃主节点。
在集群元数据的存储策略上,有两种策略可选,一是采用独立的网络存储单元,二是采用分布式程序协调系统Zookeeper作为元数据存储和活跃节点监控和失效选举。Zookeeper具有分布式数据组织、心跳监控、数据同步、选举等功能,很适合用来管理Hadoop结构中各类主节点(HDFS Namenode、HBASE Hmaster、Yarn Resource Manager等)的HA。根据用采系统的集群建设规模与实际情况,设计如图2所示。
实际部署中,集群中的部分Datanode子节点同时担负Zookeeper节点的功能,由于Zookeeper的选举机制具有“半数以上通过”的策略,因此一般采用单数个节点数,此外节点过多可能造成较大的通信开销,因此这里采用5或7个节点(zk节点)。
3 可配置的数据基础服务流程设计
3.1 数据预处理流程
在数据预处理方面,由于电力标记和数据具有多种类型,例如对阶梯电价的支持,或者对不同的功率数据进行采集等,未来还可能出现更多类型的数据业务形态,要求数据服务系统的数据预处理和清洗流程是可配置的、动态的。
在预处理层面,通常只是实现对数据的分类存储和规约化校验,不会进行复杂的统计分析,因此预处理阶段设计为利用一个MapReduce过程加以完成。为实现可配置、可扩展的数据预处理,设计MapReduce的主要流程如图3所示.
流程图描述是一个Map函数或Reduce 函数的内部执行过程。数据键值对(Key,Value)在进入Map或Reduce过程时,首先进行通用化的预处理,之后根据数据种类,读取相应预处理配置文件,再根据配置文件调用相应的处理逻辑或正则表达式进行校验、格式转换、解压缩等步骤。如果需要对预处理逻辑进行修改,只需要编辑正则表达式和自定义函数进行调整即可,而不需要对主体MapReduce函数进行修改,不会对整体过程造成额外影响。
3.2 数据质量管理
针对电力用采数据的质量管理包含两个层面。一是管理数据在存储、转换和处理过程中出现的错误、以及平台的容错性和错误恢复等,这通过容错和HA策略进行保障,并通过WEB管理界面进行操作和查看。二是统计并分析各类错误数值。主要解决异常的发现、分类和关联统计,以及可视化呈现等。
从技术实现上看,根据地区、厂商等进行的统计分析,实际是进行了多表格的联合(Join)查询。在Hadoop中,为了提高Join查询效率,会选择将小表缓存到内存,以实现Map Join。对于不同的统计方法,缓存的表格显然是不一样的,因此为了实现可配置的数据质量管理,设计可配置的数据质量统计流程如图4所示.
与预处理流程相比较:预处理不需要进行Join查询,以及数据汇聚和复杂运算,其可配置的操作内容可以放在一轮MapReduce过程中完成,而数据质量管理统计则需要多轮MapReduce依次完成。
4 针对核心架构的测试
4.1 测试平台设计
在九台X86服务器上部署数据服务平台,并且配置高可用性(HA)策略和上文描述的机架感知策略。服务器采用Openstack搭建虚拟化环境,并设置虚拟机资源为:双核CPU、8GB内存和500 GB硬盘。设置2个Namenode 节点 ,7个Datanode节点。2个Namenode中,一个设置为Active NameNode,另一个设置为Standby NameNode。在9个节点中,部署7个独立zookeeper角色,选取在2个Namenode 节点和5个Datanode节点上面。在其中一个Namenode节点上安装Hive和Hive客户端。拓扑如图5所示。
测试数据是某地区4亿条的原始用采数据,大小为30 GB左右。体现了400万以上用户规模在一天内的数据,和电量、线损计算需求。由于测试在3台实体服务器上进行,和一般Oracle服务器的硬件环境无可比性。测试账户要针对基于虚拟化搭建的Hadoop数据平台的整体运行效果和处理效率进行验证,并根据Oracle做正确性验证。
5.2 典型数据预处理过程测试
主要测试数据导入HDFS,对电量、功率、电压电流等数据进行分类写入的时间,即对数据进行综合检索的时间。对于业务系统,可能要求对处理后的原始数据导入HBASE,以方便实时查询,因此也进行了相应测试。测试结果如表1所示。
测试表明,原始数据的导入、预处理等过程在可接受的时间内完成,如果存在更多的数据节点,4亿条当日数据在更短时间内完成导入和预处理。
5.2 典型异常数据统计测试
主要测试电力用采数据中,常见错误类型的处理效果。这里选取前文描述的时间异常、数值异常和根据地区进行错误3个业务进行统计分析,并将结果数据写新文件。测试结果如表2所示。
测试表明:数据服务平台能够对常见错误进行处理,以辅助业务人员及时分析问题,维修设备和系统,及时保证用采数据的可靠采集和高质量。
6 结论
电力用采数据的管理和分析不仅对电力行业具有重要意义。 Hadoop技术由于其维护和使用的复杂度较高,目前尚未在电力行业得到大规模普及或深入应用。本文实现了性能、易扩展的分布式数据服务平台。通过对高可用性和云化部署方法的设计,简化的部署和运维的复杂度;通过混合架构设计、可配置的数据预处理和数据质量管理方法设计,提高了数据的易用性,降低了系统开发和升级的难度,提高了数据服务质量。通过测试验证了服务架构的处理性能。
参考文献
[1] 张冬欣.对居民生活用电实施阶梯式电价的思考[J]. 当代经济,2010(4)(上).
[2] 洪钊峰.Hadoop发展现状与Hadoop in China大会[C].2010.
[3] 拉贾拉曼,厄尔曼.大规模数据挖掘[M].王斌,译.北京:人民邮电出版社,2012
[4] 王德文,宋亚奇,朱永利.基于云计算的智能电网信息平台口[J].电力系统自动化,2010,34(22):7-12.
[5]冉冉, 张岩, 胡楠, 刘雪松, 栗杨, 姜昊,基于电力数据中心应用标准化设计的研究[J].电子技术应用,2014,40(z1).
[6]刘向东, 刘奎, 胡飞翔,等.基于MapReduce的并行聚类算法设计与实现[J].计算机应用与软件,2014(11).
[7]张永, 张红蕊, 路婧威.海量数据离散化算法的并行设计与实现[J].计算机应用与软件,2014(6).
[8]黄伟建, 周鸣爱.MapReduce高可用性的研究与优化[J].计算机工程与设计,2014(11).
[9]刘文峰,顾君忠,林欣,等.基于Hadoop和Mahout的大数据管理分析系统[J].计算机应用与软件,2015,32(1):47-50.