5
10
15
20
25
30
35
40
中国科技论文在线
基于 Hadoop 的智能电表平台设计与实现
http://www.paper.edu.cn
乐璐,李慧**
(北京邮电大学信息与通信工程学院,北京 100876)
摘要:当智能电表得到广泛应用时,电网部门每天都要收集和处理大量用户用电数据。传统
的单服务器架构面临着海量数据存储和计算的考验,以及海量数据传输对网络的要求。本文
针对目前智能电表平台遇到的海量数据存储和计算的问题,设计与实现了基于 Hadoop 的智
能电表平台。
关键词:Hadoop;智能电表;海量数据
中图分类号:TP338
Design and Implementation of Smart Meter Platform Based
on Hadoop
LE Lu, LI Hui
(School of Information and Communications Engineering , Beijing University of Posts and
Telecommunications, Beijing 100876)
Abstract: As the smart meter is applied popularly nowadays, the STATE Grid needs to collect and
deal with huge amounts of data from user about the power utilization. The traditional single-server
architecture is faced with the challenge about massive data's storage and computation , as well as
the requirement of the transmission. This article is to design and realize the Hadoop-Based Smart
Meter Platform, aiming at resolve the issues of massive data storage and computation.
Keywords: Hadoop; Smart Meter; Massive Data
0 引言
随着现代社会的快速发展,传统电网在输电系统的可靠性和容量上,已经无法适应新的
需求;就电力市场而言,企业规范与企业的创新性和竞争力需要大幅提高,电力部门对电网
的运营也要降低成本和提高效率。为了解决这些问题,北美、欧洲已经形成了强大的研究群
体,开展智能电网的研究,中国也在研究道路上开始进行探索。而智能电网其中一项关键技
术:表计基础设施(Advanced Metering Infrastructure),它不但允许公共事业单位以更有效
的方式收集电表读数,还能实现用户端电表和公共事业单位系统间的双向通信。但随着先进
计量基础设施的到来并得到广泛应用,智能电表将不断的记录电表读数,电网部门需收集、
存储和处理这些海量数据。为了研究用户用电行为和制定快速有效的配电策略,以及为未来
的分段计价和实时电价提供数据支持等,我们就迫切需要对用户的用电数据进行收集处理,
分析研究。
本文设计了基于 Hadoop 的智能电表平台,并在实验室中验证了数据采集和部分处理功
能。本平台是依据 Hadoop 的分布式文件系统 HDFS(Hadoop Distributed File System)搭建智能
电表平台,通过 Hadoop 的核心计算模式 MapReduce 实现对智能电表平台收集的海量数据
分析处理。
1 Hadoop
Hadoop 是 Apache 开源组织的一个分布式计算框架,能够对大量数据进行分布式处理的
软件框架,实现了 Google 的 MapReduce 编程模型和框架,能够把应用程序分割为许多小的
作者简介:乐璐,(1986-),女,硕士,云计算。
通信联系人:李慧,(1978-),女,硕士生导师,主要研究方向:融合网络优化. E-mail: lihui@bupt.edu.cn
- 1 -
中国科技论文在线
http://www.paper.edu.cn
工作单元,并把这些单元放到任何集群节点上执行[1]。Hadoop 主要由 Hadoop Common、
HDFS、MapReduce 三个子项目构成[2]。
Hadoop Common 是支撑 Hadoop 的公共部分,包括文件系统、远程过程调用和序列化函
45
数库等。
HDFS 是 Hadoop 应用的分布式存储系统,具有高度容错性,能够提供高吞吐量的数据
访 问, 提供对 数据 可扩 展性的 访问 ,非常 适合 大规 模数 据集上 的应 用。HDFS 采 用
Master/Slave 架构,一个 HDFS 集群主要由一个 NameNode 和多个 DataNode 组成:NameNode
管理文件系统的元数据,负责记录文件是如何分割成数据块,以及数据块分别被存储到哪些
节点上;DataNode 负责存储数据,并在 NameNode 的统一调度下处理文件系统客户端的读
写请求。DataNode 定期向 NameNode 上报心跳,NameNode 通过心跳响应来控制 DataNode[3]。
MapReduce 是一种处理海量数据的并行编程模型和计算框架,用于对大规模数据集的
并行计算。MapReduce 的实现也采用 Master/Slave 架构,把大规模数据集的操作,由一个单
独的 master JobTracker 分发给其管理下的各分节点 TaskTraker 共同完成,然后通过整合各分
节点的中间结果,得到最终结果。
图 1 给出了 MapReduce 处理大数据集的过程[4],由图可以看出,此计算模型的核心是
map 和 reduce 函数,这两个函数的具体功能由程序员根据需要自己设计实现[5]。
50
55
60
65
MapReduce 将任务输入数据分割为固定大小的片段,每个 split 分解为。每个
split 创建一个 Map 任务执行 map 函数,将输入的算出中间结果,接着把
中间结果按 K2 排序并组合 key 值相同的组,得到。再根据不同的 K2 对应不
同的 Reduce 任务。Reducer 把不同 Mapper 得到的结果整合重新排序,再调用用户定义的
图 1 MapReduce 数据处理流程
Figure. 1 MapReduce Data Processing Flow
- 2 -
中国科技论文在线
http://www.paper.edu.cn
reduce 函数,对输入的作对应处理,得出输出结果并输出到 HDFS[6]。
2 基于 Hadoop 的智能电表平台
智能电表平台通过表计基础设施在用户端收集电气数据,存储到分布式存储平台,为用
户、公共事业单位提供电能信息查询、计费查询等服务。图 2 为本平台的系统体系结构图:
客户端
Web服务器
Web服务器
存储及处理层
……
Hadoop Server Master
Hadoop Server Slave
代理点
数传模块
……
表计数据采集
点
智能插座
表计数据采集
点
……
……
采集层
监控设备层
70
75
图 2 智能电表平台体系结构
Figure. 2 Architecture of Smart Meter Platform
由图可以看出,本平台分为四个层面:
1. 监控设备层:接入电气设备作为被监控对象。
2. 采集层:使用JCB1-143单相二三极面板式计量插座采集电能信息,传送给智能电表
代理点,由代理点转发到Hadoop Server。
3. 存储及处理层:负责把接收的原始电能数据预处理和存储,并响应Web服务器发送
的查询请求。
80
4. Web服务器:负责接收用户输入,向主服务器请求结果,再输出到浏览器页面。
2.1 工作原理和处理流程
从收集到用户的电气数据到客户端响应用户查询请求,可以将智能电表平台的工作划分
为离线处理和在线处理两部分,离线处理为在线处理提供数据和服务。
平台的离线处理是指在客户端接收用户的查询请求之前需要完成的一系列工作,主要包
85
90
括采用表计基础设施采集电能信息,对电能信息的预处理等。离线处理对实时性要求不高,
但工作量很大。
平台的在线处理是指用户在客户端输入查询请求后,平台响应用户请求,反馈查询结果
所进行的一系列工作,主要包括:接收用户查询条件,请求 Hadoop Server Master 获取响应
信息,把反馈结果通过图表插件 FusionCharts 以图表形式展示。在线处理对实时性要求很高,
任务量相对离线处理较少。
- 3 -
中国科技论文在线
http://www.paper.edu.cn
智能电表平台的主要处理流程按照功能可以划分为三大部分,其中数据采集和 Hadoop
Server 部分负责离线工作,Web Server 负责在线工作。数据采集负责电气数据的采集,Hadoop
Server 是整个平台的核心部分,负责电气数据的预处理和存储,为后面的在线查询做好准备,
Web Server 主要负责智能电表平台网站的网站界面,为用户提供一个查询接口,把查询结果
反馈到网站页面。
2.2 数据采集
95
因为智能电表需要采集用电设备的实时电压、电流、功率、累积耗电量等电气信息,同
时需要提供上传的接口,因此平台采用新型的智能表计插座可实现电器连接和计量功能,包
括监测用电器(负载)的累积用电量、电流、电压、有功能率等信息,液晶显示屏数字化显
示,停电后保留电能累计值,支持通过无线方式上传采集到的数据。
100
平台采用数传模块 LC-DT01 作为代理点与数据采集点之间的通信中继点。数据采集模
块通过无线方式把收集的电能信息发送到数传模块,数传模块获得各个数据采集点的电能信
息,然后以串口通信协议 RS-232 将汇总的电能信息上传给数据代理。数据采集点、数传模
块与代理服务器组网方式如图 3:
105
110
图 3 数据采集点、数传模块与代理服务器组网方式
Figure. 3 Network Mode of Data Acquisition, Wireless Data Collector And Proxy Server
数据代理点接收到数传模块上传的电气数据,往原始数据添加所属代理点信息,转发给
Hadoop Server,交由 Hadoop Server 做进一步的预处理和存储等工作。
2.3 Hadoop Server
这部分是平台的核心部分,包括两部分工作:离线部分,负责存储所有电能数据,为后
续的查询服务作预处理;在线部分,根据 Web Server 的查询请求,负责平台数据的整合和
计算。
115
Hadoop Server 离线部分工作包括两部分:存储收集的电气数据和把电能数据解析成为
类倒排索引的数据形式。类倒排索引是根据智能电表平台存储的是电能数据的特点,修改文
件检索系统常用的倒排索引方法,以插座号作为索引来查找对应的电能信息。这部分工作是
整个系统的重点,对数据作预处理会大大的降低在线查询时的计算时间。
Hadoop Server 把数据按行以 ASCII 编码存储,其中每一行是一条记录。下面例子显示
一行用电数据记录。该行数据被分成很多行以显示每个字段,在实际文件中,这些字段被整
合为一行且没有任何分隔符。如:
120
- 4 -
中国科技论文在线
http://www.paper.edu.cn
000000010000000120110401090807001221120002200000026530000002134 代表:
00000001
00000001
20110401090807001
22112
00022
0000002653
0000002134
Hadoop Server 对数据预处理的其工作流程大概有以下步骤:
1. 把接收到的文件采用 Hadoop 默认的文件分割方式,将源文件分成若干小文件[7]。
//所在代理点编号
//插座编号
//数据记录时间:2011-04-01 09:08:07.001
//电压值:221.12
//电流值:0.22
//实时功率值:26.53
//累积耗电量为 21.34
例如:
000000010000000120110401090807001221120002200000026530000002134
000000010000000120110401090808002220120001100000029670000011167
000000020000000320110401090807004221020001700000028790000027410
000000020000000320110401090808003221130003200000031440000002011
000000020000000120110401090807003221420001500000022320000001221
2. 在 Map 阶段,对于每个小文件都采用按行切分的方法输入,从每行提取每个插座、
125
130
135
时间和电能信息,并以<代理点号:插座号,时间:电压-电流-功率-累积耗电量>将它们作
为输出:
140
145
150
155
160
<1:1 , 20110401090807:221.12-0.22-26.53-21.34>
<1:1 , 20110401090808:220.12-0.11-29.67-111.67>
<2:3 , 20110401090807:221.02-0.17-28.79-274.1>
<2:3 , 20110401090808:221.13-0.32-31.44-20.11>
<2:1 , 20110401090807:221.42-0.15-22.32-12.21>
3. 经过分区阶段,从 Map 输出具有相同的 key 的一对会分到同一个 Reducer,每个
reduce 函数处理相同插座的对,最终输出为:
<1:1 , 20110401090808:220.12-0.11-29.67-111.67;20110401090807:221.12-0.22-26.53-21.34>
<2:3 , 20110401090807:221.13-0.32-31.44-20.11;20110401090807:221.02-0.17-28.79-274.1; >
<2:1 , 20110401090807:221.42-0.15-22.32-12.21>
Hadoop Server 离线部分工作是响应 Web Server 请求,调用 MapReduce 完成数据的整合
和计算。
2.4 Web Server
智能电表平台的 Web 页面信息查询服务是由部署在 Web Server 的网站提供的。Web
Server 主要负责提供用户接口,完成实时地接受用户的查询请求,并将查询计算结果反馈给
用户。
Web Server 基于 Java EE,采用 Tomcat+JSP 实现动态网页查询。系统结构遵循 MVC 模
式设计,分为三个基本部分:Model(模型)、View(视图)和 Controller(控制器)。这
三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。Model 由 JavaBean
充当,View 由 JSP 页面充当,Controller 由 Servlet 充当。Servlet 作为前端控制器,负责接
受客户端发送的请求,在 Servlet 中只包含控制逻辑和简单的前端处理,然后调用后端
JavaBean 来完成实际的逻辑处理;最后转发到相应的 JSP 页面处理显示逻辑。
Web Server 工作流程是:用户在浏览器输入查询请求,网站前端对用户的输入进行过滤
- 5 -
中国科技论文在线
http://www.paper.edu.cn
165
性检查,例如查询时间不合法等等,再向后台程序发送查询请求信息。后台接收到用户在浏
览器的查询请求,将其交给相应的Java Servlet 容器处理。此时Java Servlet 调用部署在 Hadoop
Server 对应的 Map 和 Reduce 函数完成相应的操作。
网站有以下四大功能模块:
用户管理:包括修改密码、查询系统现有用户、添加用户、删除用户以及更新用户权限
等等用户管理功能。
170
配置管理:包括查询现有设备配置信息以及远程控制开关功能。
性能显示:这是平台核心功能之一。提供插座本年、本月、当天、本小时内,任意一天
或者任意时间段内的电能信息。
计费功能:计算插座任意时间段的耗电量以及费用,实现分时定价功能。用户可以根据
此报告合理安排自己的用电习惯以达到更好的经济效益。
3 实例
175
在该实例中,我们查询所有插座以组为单位在 2011 年上半年的总耗电量情况,并根据
不同的计费单价区分。平台读取数据文件的每一行记录,提取在该时间段的电能信息。系统
的运行过程如下:
1. 用户在客户端选择所有插座,时间段选择为 2011-01-01 到 2011-06-30。
2. Web Server 接收到客户请求,交由相应的 Servlet 向 Hadoop Server 的 Master 节点
提交任务。Master 接收到任务后,将任务分配给每一个 Hadoop Server Slave。
3. Hadoop Server Slave 运行 map 函数,读取位于该节点的数据块(此处数据块在离线
工作时生成),把符合该时段的数据提取,构成新的键值对。再经过 Shuffle 和 Combine 过
程后,运行 reduce 函数,将 combine 后的键值对,根据组编号和时间信息输出最终的键值
对。
4. Hadoop Server Master 把最终的键值按照 FusionCharts 要求的数据格式,把数据以
180
185
xml 的格式反馈给 Web Server。
5. Web Server 把数据以图表的形式展现给用户。
4 实验结果
190
195
图 4 各组在 2011 年上半年各个时间段的耗电量总和及耗电费用
Figure.4 the Power Consumption And Cost From 2011-01-01 To 2011-06-30 of Three Goups
图 4 显示了在用户输入查询条件为“2011 年上半年各时间的耗电费用”时,Web 页面
显示的曲线图。由此可以看出,基于 Hadoop 的智能电表平台能够应对分布式存储海量数据
- 6 -
中国科技论文在线
以及具备对数据并行处理的能力。
5 结束语
http://www.paper.edu.cn
本文设计与实现了基于 Hadoop 的智能电表平台,包括电气信息数据的采集、处理、存
储和计算。通过平台对海量的用电数据的处理,证明 Hadoop 能够应对海量的数据存储和处
理。
[参考文献] (References)
[1] 刘鹏. 实战 Hadoop--开启通向有云计算的捷径[M]. 北京:电子工业出版社,2011
[2] Apache. Welcome to Apache Hadoop[OL]. 2011. http://hadoop.apache.org/.
[3] 朱珠. 基于 Hadoop 的海量数据处理模型研究和应用[D]. 北京:北京邮电大学,2008
[4] CHUCK LAM. Hadoop in Action[M]. the United States of America:Manning Publications, 2010
[5] Tom White. Hadoop 权威指南(2 版)[M]. 周敏奇. 北京:清华大学出版社,2011
[6] 刘鹏. 云计算[M] 北京:电子工业出版社,2011
[7] Jason Venner. Pro Hadoop[M]. the United States of American:Apress, 2009
200
205
210
- 7 -