论文部分内容阅读
摘要: 随着电网向分布式和智能化发展和电网管理信息化水平不断提高,电网数据不断增多。使用传统的管理系统,无法高效地解决海量数据的存储、检索和分析。本文应用现阶段流行的大数据处理技术,探讨解决这一问题。并设计了基于Hadoop的智能电网远程管理系统,描述了系统的整个设计过程,并实现系统的关键技术。
关键词: Hadoop;智能电网;web管理
[Abstract]With the development of distributed and intelligent network and the deepening of power grid management information, the power grid data is increasing. The traditional management system can not solve the problem of mass data storage, retrieval and analysis. In this paper, the application of large data processing technology is discussed to solve this problem. The remote management system of smart grid based on Hadoop is designed, and the whole design process and key technologies of the system are described.
[Key words]Hadoop; smart grid; Web Management
【中图分类号】TP393.4【文献标识码】A【文章编号】2236-1879(2017)04-0186-03随着全球变暖和能源短缺的影响,传统的火电和水电正逐渐向分布式电网方向发展,新兴能源越来越多的不断被人们开发出来。电能供给方式正由单一化向多元化方向发展,太阳能、风能、核能等多种方式的能源利用正逐渐成熟起来。如何让各种能源稳定、有序的运行起来,并得到合理利用和开发,成了人们急需解决的问题。
另一方面,互联网和数字化的时代的到来。对这一问题的解决带来了新的机遇和挑战。多种能源组成的分布式电网与数字化结合以后,逐渐往智能化方向发展。随着电网发展的逐渐数字化和智能化,人们通过各种数字化数据采集技术,电网的生产数据量正由几何级数的上涨。而智能电网不断的产生各种实时性的数据,如何从海量的数据中发现生产问题并及时解决以提高智能电网的可靠性成了急需解决的问题。传统的业务系统和生产方式中,多采用昂贵的服务器和关系数据库,难以适应大数据新形势的发展。
本课题根据当前的形势,对大数据和web服务器的相关管理系统的进行了分析研究,通过比较Hadoop与传统的关系型数据库的不同特点,提出了一套基于Hadoop的智能电网远程管理系统。该系统解决了传统数据库难以解决的海量数据的存储和分析的问题,并实现了对Hadoop平台的封装,运用现代流行的web技术形成了友好的人机界面,并有效地实现了远程管理。
1基于Hadoop的智能电网远程管理系统的整体结构
智能电网管理系统的主要任务包括采集电网中各种海量的生产数据,并对数据进行存储和进一步的分析,根据分析结果做出相应的管理决策。主要分为四层结构,设备层、数据采集和传输层、数据存储和分析层、WEB服务层。
如图1所示,数据采集和传输层把生产过程数据传送到数据存储层和分析层,数据存储和分析层把控制数据传到数据采集和传输层,实现管理和控制的作用。WEB服务层的查询请求发送到数据存储和分析层,然后数据存储和分析层返回数据。
2基于Hadoop的智能电网远程管理系统的具体实现
2.1设备层 电网设备层,能源部分(风能、光能)储能部分、负载部分、逆变装置、计量测控负控保护等装置。如图2所示。
2.2数据采集和传输层 数据采集和传输层,又分为现场感知层、网络通信层。现场感知层,包括各种传感器以及传感器线路,有温度传感器、湿度传感器、光照传感器以及各种读写器、摄像头、GPS和单片机等。网络通信层,主要实现信息的双向传递和控制。有Zigbee、Wifi等无线网络,还有双绞线、光纤和同轴电缆等有线网络,还有交换机和路由器等网络设备。如图2所示。
2.3数据存储和分析层 传统数据存储和分析一般是基于各种关系数据库。关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现代智能电网设备复杂多变,有许多新兴能源,如光能、风能、核能等,地理位置是依据自然条件选择的,总体来说是符合分布式模型。
另一方面,现代电网智能设备多样。每时每刻都产生海量的各种形式的数据,如运行状态数据、各种监控数据、自然环境数据、地理位置数据等。
总体来说,具有分布式和海量数据的特征。而基于Hadoop的存储和分析技术很好地适应了这一需求。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distribute File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。本层设计如图4所示,Hadoop集群包含一个NameNode和大量的DataNode。NameNode是一个通常在HDFS实例中的单独机器上运行的软件,是集群的管理者,也是客户端访问文件系统的接口,负责元数据的存储;智能电网中的海量数据存储在DataNode中,可以通过大量低廉的设备存储海量的信息,负责三份数据块的存储;存储客户端负责底层,也就是数据存储和分析层的信息流输入Hadoop的HDFS文件系统中,可以放置在工作区;查询客户端负责上层,Web服务层的查詢请求,可以放置在数据中心。查询和存储建立专门的查询类和存储类通过java使用jdbc与hive建立连接。 2.4 WEB服务层 WEB服务层分为浏览器、WEB服务器和Hive。WEB访问采用MVC的编程模式。V(view),采用jsp页面技术,配合html、CSS、JavaScript前端技术;M(Mode),采用java实体类;C(Controller),采用Strut2框架,Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。WEB服务器采用tomcat7集群的方式;Hive是基于Hadoop而衍生的一个数据仓库工具,它的特色是用户可以通过编写简单的类似SQL语言语法的hql语句来对这个数据仓库中的数据进行快熟查询统计,是通过Hadoop中map-reduce 程序完成的。如图4。
3关键技术
3.1Hive与Hadoop的关系 Hive的特点:可扩展,Hive可以自由的扩展集群的规模,一般情况下不需要重启服务;延展性,Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数;容错,良好的容错性,节点出现问题SQL仍可完成执行;操作接口采用类SQL语法,提供快速开发的能力;避免了去写MapReduce,减少开发人员的学习成本。如图5。
存储客户端和查询客户端,通过执行类SQL语句实现数据的插入操作和查询操作。
3.2 java连接Hive和实现查询操作Java连接Hive,采用jdbc的方式。先开启hive service,如hive —service hiveserver -p 50000 &,打开50000端口。Java连接Hive的代码如下,
public class HiveService {
private static final String URLHIVE = "jdbc:hive://ip:50000/default";
private static Connection connection = null;
public static Connection getHiveConnection() {
if (null == connection) {
synchronized (HiveService.class) {
if (null == connection) {
try {
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
connection = DriverManager.getConnection(URLHIVE, "", "");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
return connection;
}
public static void select_hive_table() throws SQLException {
long aaa = System.currentTimeMillis();
long start = DateUtils.getNDaysAgo(DateUtils.getMidNight().getTime().getTime();
long end = DateUtils.getNDaysAgo(DateUtils.getMidNight().getTime().getTime();
String sql = "select cuser_id, created_at, tweet_id from hive_table where created_at > ? and created_at < ? and cuser_id = ?";
PreparedStatement pstm = getHiveConnection().prepareStatement(sql);
pstm.setLong(1, start);
pstm.setLong(2, end);
pstm.setString(3, "123456");
ResultSet rss = pstm.executeQuery();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
while (rss.next()) {
long cc = Long.valueOf(String.valueOf(rss.getInt("created_at")) + "000");
java.util.Date date = new java.util.Date(cc);
System.out.println(dateFormat.format(date));
System.out.println(rss.getString("cuser_id") + " " + rss.getString("tweet_id"));
}
System.out.println(System.currentTimeMillis() - aaa);
}
4结论
本课题针对智能电网电能分布复杂、数据量不断攀升的趋势提出了智能电网的远程管理系统。本系统采用Hadoop技术实现了数据的海量存储和查询,并使用web系统提供了友好的访问界面,采用现代流行的java语言,对系统的整体架构进行了分层详细的设计,并给出了关键技术的java代码。对海量数据的存储和检索,实现智能电网的有效管理,提出了有意义的探索。
作者简介:金雄军(1971-),男,浙江人,硕士,高级工程师,主要研究方向计算机应用技术,绘图所用软件:Microsoft Visio 2010
参考文献
[1] 刘树仁,宋亚奇,朱永利,王德文. 基于Hadoop的智能电网状态监测数据存储研究[J] 计算机科学,2013,40(1):81-84
[2] 金鳳. 基于hadoop的web管理系统[D]. 北京:北京邮电大学,2015:1-76
关键词: Hadoop;智能电网;web管理
[Abstract]With the development of distributed and intelligent network and the deepening of power grid management information, the power grid data is increasing. The traditional management system can not solve the problem of mass data storage, retrieval and analysis. In this paper, the application of large data processing technology is discussed to solve this problem. The remote management system of smart grid based on Hadoop is designed, and the whole design process and key technologies of the system are described.
[Key words]Hadoop; smart grid; Web Management
【中图分类号】TP393.4【文献标识码】A【文章编号】2236-1879(2017)04-0186-03随着全球变暖和能源短缺的影响,传统的火电和水电正逐渐向分布式电网方向发展,新兴能源越来越多的不断被人们开发出来。电能供给方式正由单一化向多元化方向发展,太阳能、风能、核能等多种方式的能源利用正逐渐成熟起来。如何让各种能源稳定、有序的运行起来,并得到合理利用和开发,成了人们急需解决的问题。
另一方面,互联网和数字化的时代的到来。对这一问题的解决带来了新的机遇和挑战。多种能源组成的分布式电网与数字化结合以后,逐渐往智能化方向发展。随着电网发展的逐渐数字化和智能化,人们通过各种数字化数据采集技术,电网的生产数据量正由几何级数的上涨。而智能电网不断的产生各种实时性的数据,如何从海量的数据中发现生产问题并及时解决以提高智能电网的可靠性成了急需解决的问题。传统的业务系统和生产方式中,多采用昂贵的服务器和关系数据库,难以适应大数据新形势的发展。
本课题根据当前的形势,对大数据和web服务器的相关管理系统的进行了分析研究,通过比较Hadoop与传统的关系型数据库的不同特点,提出了一套基于Hadoop的智能电网远程管理系统。该系统解决了传统数据库难以解决的海量数据的存储和分析的问题,并实现了对Hadoop平台的封装,运用现代流行的web技术形成了友好的人机界面,并有效地实现了远程管理。
1基于Hadoop的智能电网远程管理系统的整体结构
智能电网管理系统的主要任务包括采集电网中各种海量的生产数据,并对数据进行存储和进一步的分析,根据分析结果做出相应的管理决策。主要分为四层结构,设备层、数据采集和传输层、数据存储和分析层、WEB服务层。
如图1所示,数据采集和传输层把生产过程数据传送到数据存储层和分析层,数据存储和分析层把控制数据传到数据采集和传输层,实现管理和控制的作用。WEB服务层的查询请求发送到数据存储和分析层,然后数据存储和分析层返回数据。
2基于Hadoop的智能电网远程管理系统的具体实现
2.1设备层 电网设备层,能源部分(风能、光能)储能部分、负载部分、逆变装置、计量测控负控保护等装置。如图2所示。
2.2数据采集和传输层 数据采集和传输层,又分为现场感知层、网络通信层。现场感知层,包括各种传感器以及传感器线路,有温度传感器、湿度传感器、光照传感器以及各种读写器、摄像头、GPS和单片机等。网络通信层,主要实现信息的双向传递和控制。有Zigbee、Wifi等无线网络,还有双绞线、光纤和同轴电缆等有线网络,还有交换机和路由器等网络设备。如图2所示。
2.3数据存储和分析层 传统数据存储和分析一般是基于各种关系数据库。关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现代智能电网设备复杂多变,有许多新兴能源,如光能、风能、核能等,地理位置是依据自然条件选择的,总体来说是符合分布式模型。
另一方面,现代电网智能设备多样。每时每刻都产生海量的各种形式的数据,如运行状态数据、各种监控数据、自然环境数据、地理位置数据等。
总体来说,具有分布式和海量数据的特征。而基于Hadoop的存储和分析技术很好地适应了这一需求。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distribute File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。本层设计如图4所示,Hadoop集群包含一个NameNode和大量的DataNode。NameNode是一个通常在HDFS实例中的单独机器上运行的软件,是集群的管理者,也是客户端访问文件系统的接口,负责元数据的存储;智能电网中的海量数据存储在DataNode中,可以通过大量低廉的设备存储海量的信息,负责三份数据块的存储;存储客户端负责底层,也就是数据存储和分析层的信息流输入Hadoop的HDFS文件系统中,可以放置在工作区;查询客户端负责上层,Web服务层的查詢请求,可以放置在数据中心。查询和存储建立专门的查询类和存储类通过java使用jdbc与hive建立连接。 2.4 WEB服务层 WEB服务层分为浏览器、WEB服务器和Hive。WEB访问采用MVC的编程模式。V(view),采用jsp页面技术,配合html、CSS、JavaScript前端技术;M(Mode),采用java实体类;C(Controller),采用Strut2框架,Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。WEB服务器采用tomcat7集群的方式;Hive是基于Hadoop而衍生的一个数据仓库工具,它的特色是用户可以通过编写简单的类似SQL语言语法的hql语句来对这个数据仓库中的数据进行快熟查询统计,是通过Hadoop中map-reduce 程序完成的。如图4。
3关键技术
3.1Hive与Hadoop的关系 Hive的特点:可扩展,Hive可以自由的扩展集群的规模,一般情况下不需要重启服务;延展性,Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数;容错,良好的容错性,节点出现问题SQL仍可完成执行;操作接口采用类SQL语法,提供快速开发的能力;避免了去写MapReduce,减少开发人员的学习成本。如图5。
存储客户端和查询客户端,通过执行类SQL语句实现数据的插入操作和查询操作。
3.2 java连接Hive和实现查询操作Java连接Hive,采用jdbc的方式。先开启hive service,如hive —service hiveserver -p 50000 &,打开50000端口。Java连接Hive的代码如下,
public class HiveService {
private static final String URLHIVE = "jdbc:hive://ip:50000/default";
private static Connection connection = null;
public static Connection getHiveConnection() {
if (null == connection) {
synchronized (HiveService.class) {
if (null == connection) {
try {
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
connection = DriverManager.getConnection(URLHIVE, "", "");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
return connection;
}
public static void select_hive_table() throws SQLException {
long aaa = System.currentTimeMillis();
long start = DateUtils.getNDaysAgo(DateUtils.getMidNight().getTime().getTime();
long end = DateUtils.getNDaysAgo(DateUtils.getMidNight().getTime().getTime();
String sql = "select cuser_id, created_at, tweet_id from hive_table where created_at > ? and created_at < ? and cuser_id = ?";
PreparedStatement pstm = getHiveConnection().prepareStatement(sql);
pstm.setLong(1, start);
pstm.setLong(2, end);
pstm.setString(3, "123456");
ResultSet rss = pstm.executeQuery();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
while (rss.next()) {
long cc = Long.valueOf(String.valueOf(rss.getInt("created_at")) + "000");
java.util.Date date = new java.util.Date(cc);
System.out.println(dateFormat.format(date));
System.out.println(rss.getString("cuser_id") + " " + rss.getString("tweet_id"));
}
System.out.println(System.currentTimeMillis() - aaa);
}
4结论
本课题针对智能电网电能分布复杂、数据量不断攀升的趋势提出了智能电网的远程管理系统。本系统采用Hadoop技术实现了数据的海量存储和查询,并使用web系统提供了友好的访问界面,采用现代流行的java语言,对系统的整体架构进行了分层详细的设计,并给出了关键技术的java代码。对海量数据的存储和检索,实现智能电网的有效管理,提出了有意义的探索。
作者简介:金雄军(1971-),男,浙江人,硕士,高级工程师,主要研究方向计算机应用技术,绘图所用软件:Microsoft Visio 2010
参考文献
[1] 刘树仁,宋亚奇,朱永利,王德文. 基于Hadoop的智能电网状态监测数据存储研究[J] 计算机科学,2013,40(1):81-84
[2] 金鳳. 基于hadoop的web管理系统[D]. 北京:北京邮电大学,2015:1-76