典型业务场景

在电力行业项目甚至大多数工业项目中,都会涉及到对传感器等设备的采集数据进行存储和处理这一典型的业务场景,具体流程为:

  1. 将传感器的采集数据汇集到前置的汇集器
  2. 前置的汇集器将实时数据数据传输到数据处理中心
  3. 数据处理中心对传输过来的实时数据进行实时的清洗和告警
  4. 将实时数据和告警、计算数据一并存入持久化存储
  5. 对持久化存储中的数据进行多维分析与数据挖掘
  6. 对持久化存储中的数据进行可视化展示

如图所示:


可用技术

根据采集数据接入和处理这一典型的业务场景,我们针对每个环节列举了一些常用的技术。

数据传输

由于实际情况下,可能存在多个数据源,所以需要使用消息队列对实时数据进行汇总,这样可以实现数据生产与消费之间的解耦。除了解耦外,消息队列还提供了流量削峰的功能,以防止异常的流量过大导致下游处理程序崩溃。
常见的消息队列如下:

  • RabbitMQ
  • ZeroMQ
  • ActiveMQ
  • Kafka

实时处理

实时处理传统的方式是使用Java程序,当数据量较大的时候可以考虑使用流处理框架。常见的实时处理方式如下:

  • Java程序
  • Apache Storm
  • Apache Samza
  • Spark Streaming
  • Apache Flink

数据落地

对于大量采集数据的写入,使用关系型数据库性能肯定是达不到要求的。可以考虑使用分布式数据库或分布式文件系统。常用的持久化存储如下:

  • 实时数据库(比如pi,庚顿)
  • Apache HBase
  • OpenTSDB
  • Cassandra
  • Hive /HDFS

离线处理

除了可以用普通Java程序进行离线处理,还可以使用批处理方式的数据处理框架进行处理,常用的数据处理方式如下:

  • Java程序
  • MapReduce
  • Spark

在线分析

对数据进行在线分析需要提供SQL或类SQL接口。常用的在线分析工具如下:

  • Apache Hive
  • Spark SQL
  • Presto

列举了每个环节的可选的技术之后,我们来结合两个具体案例浅谈一下在这种典型业务场景下的技术选型。

配用电系统采集数据处理

这个实例是某配用电系统中设备采集数据处理部分,主要采用Java程序的方式来进行数据处理。结构图如下:

将采集上来的数据存入消息队列中,经过不同的处理程序处理过后存入持久化存储并提供给上层调用。

设计思路

消息队列——Apache Kafka

由于实际情况下,可能存在多个数据源,所以需要使用消息队列对实时数据进行汇总,这样可以实现数据生产与消费之间的解耦。除了解耦外,消息队列还提供了流量削峰的功能,以防止异常的流量过大导致下游处理程序崩溃。
常见的消息队列如下:

  • RabbitMQ
    RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。
  • ZeroMQ
    ZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景。但是ZeroMQ仅提供非持久性的队列,也就是说如果down机,数据将会丢失。
  • ActiveMQ
    ActiveMQ是Apache下的一个子项目。 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。同时类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景。
  • Kafka
    由linkedin公司开发的分布式消息队列,最初被设计用来传输日志信息。具有持久化存储、高吞吐、分布式、自动均衡负载、与Hadoop等大数据技术结合较好等特性。

由于设备的实时数据量非常大,对消息队列的吞吐率和读写速度有着较高要求。Kafka虽然没有实现JMS规范,但是在吞吐率和读写速度方面“吊打”其他MQ,所以本次测试中选用Kafka作为实时数据传输的消息队列。

实时数据存储——庚顿

在工业项目中,实时数据库被大量应用与传感器等设备的采集数据的存储,比较著名的实时数据库有OSIsoft公司的PI ,Wonderware公司的Industrial SQL等,不过价格都较为昂贵。基于成本和性能的综合考量,我们使用了国内的实时数据库庚顿(Golden)。

统计数据——MySQL

在项目中需要将实时数据定时进行计算和统计,提供给上层业务进行查询。统计数据我们选择了用MySQL进行存储。

处理程序

在配用电系统中,采集数据处理模块全部的处理逻辑全部在普通Java程序中实现。下面简述每个处理程序的主要逻辑。
- KafkaToReal
KafkaToReal模块主要将Kafka中的实时数据存入实时数据库中。
- Alamer
拉取Kafka中的数据进行计算,根据特定的告警规则触发告警,并将告警信息写入Kafka和MySQL中。
- DataProcess
定时对实时数据库中的数据进行计算,并将结果存入MySQL中。
- WebSocket
拉取Kafka中的实时数据,并向注册了推送服务的Web页面推送实时数据。

未来的问题

目前这套技术选型已经很好的完成了当前的项目需求,但是从长远的目光看,随着数据量的增长,这套数据处理技术存在一个比较大的问题:难以横向扩展。即随着数据量的增长,不能简单的依靠增加服务器数量的而完成处理能力的增长。这也推动了我们进行下一个例子中的那些大数据技术的研究。
而既然存在难以横向扩展的问题,为什么我们还要选用当前这套技术选型呢?主要原因有二:

  1. 数据量不大
    当前数据量并未达到单机无法处理的级别,采用当前技术选型完全可以处理。
  2. 降低人力成本
    引入大数据技术将提升开发的复杂度,提升开发成本。而且维护大数据集群也会给运维人员造成较大的困难。

在这里也体现了我们进行技术选型时的思路:杀鸡不用牛刀。当单机可以处理的时候,尽量使用单机处理技术。当简单的技术可以实现的时候,尽量不引入复杂技术。

风电场机组采集数据处理

业务需求

  • 将采集到的设备的实时数据存入持久化存储
  • 对数值超出上下限的测点进行实时告警
  • 计算采集数据不同时间段内的均值,一并存入持久化存储
  • 对持久存储中的数据提供类SQL查询

技术选型

根据以上需求,大数据组提出了使用Apache Kafka、Apache Spark等技术的解决方案,如图所示:

测试结果
  • 实时数据落地:流处理框架负责实时数据落地、实时告警和分钟均值计算。实际可以处理每秒2600台设备。
  • 离线SQL查询:使用Presto进行count查询,实际运行时间 <50s。

测试的详细细节请参考我的另一篇博客:使用大数据技术处理风电场机组采集数据

设计思路

消息队列——Apache Kafka

同上个例子。

数据处理框架——Apache Spark

数据处理框架被用来对海量数据进行处理。按照处理数据的方式和时效性,处理框架分为批处理框架和流处理框架,下面简单介绍它们的适用场景:

  • 批处理框架
    批处理框架主要用于计算数据量巨大,而对时延要求不高的数据。目前真正海量的数据(比如TB甚至PB级)只能选择批处理框架来处理。
  • 流处理框架
    流处理框架所能处理的数据量不如批处理框架大,一般认为精确度也没有批处理框架高。但是流处理框架的时效性很好,可以实时或近实时的展示处理结果。

接下来分别介绍几种常用的数据处理框架

批处理框架
  • Apache Hadoop(MapReduce)
    Hadoop是专用于批处理的处理框架,特点是可以部署在廉价的集群上,具有高容错性。不同于其他处理框架对于内存较大的需求,Hadoop计算时会消耗较多的硬盘资源,但由于硬盘资源是服务器上最廉价的资源,所以使用Hadoop的成本较低。但缺点是计算较慢。
流处理框架
  • Apache Storm
    Storm是经典的流处理框架,处理方式是逐项处理,可以实现毫秒级延迟,但不支持原生的时间窗口。虽然使用Trident可以以微批次的方式实现时间窗口,但性能会受到较大影响。
  • Apache Samza
    同Kafka一样由linkedin公司开发并开源,底层使用Kafka的存储和数据管理方式,自身仅提供API。同Storm一样可以逐项处理。优点是与Kafka紧密结合,很适合有多个团队需要使用(但相互之间并不一定紧密协调)不同处理阶段的多个数据流。
混合框架:批处理+流处理

除了批处理框架和流处理框架,还有一种框架即可以进行批处理,也可以进行流处理,它们被称为混合框架。混合框架主要有Spark和Flink。

  • Apache Spark
    Spark的批处理方式类似于MapReduce,但Spark提供了更加友好的编程模型,执行效率也更加高效。不过与此同时Spark需求更多的内存资源,所以硬件成本相对Hadoop更高。
    Spark的流处理库称为Spark Streaming,Spark Streaming采用微批次(micro-batch)架构,即把一小段时间内的数据流当做一个批次来处理。这样做的缺点是只能实现秒级延迟,但优点是支持原生的时间窗口。
  • Apache Flink
    同为混合框架的Flink与之前介绍的Spark在思想上有本质的不同——Spark把流当做一个个微批次来处理,而Flink则把批处理当成有限的流来处理。由于Flink流处理优先的架构,所以Flink更适合于大量流处理和少量批处理的应用场景。

由于测试中需要同时使用流处理框架(实时告警、分钟均值计算)和批处理框架(小时均值、日均值、月均值),所以优先选择混合处理框架。Flink是新型的处理框架,目前还没有大型企业成功的商用案例,而Spark相比Flink更成熟,社区也更加活跃,所以选用Spark作为实时计算和离线计算的数据处理框架。

持久化存储——HDFS

HDFS全称为Hadoop Distributed File System(Hadoop分布式文件系统)。HDFS可以部署在廉价的服务器集群上,并且具有可以横向扩展、高容错、高吞吐等特点,非常适合大规模数据集的应用场景。事实上,HDFS是最主流的开源分布式文件存储系统。因为其高吞吐量、支持快速写入的特点,非常适合大量实时数据落地。
在测试过程中,我们分别尝试过HBase、OpenTSDB、Cassandra等数据库,发现落地性能均不理想,最后选择了HDFS。

数据仓库——Apache Hive

由Facebook研发并开源。Apache Hive是一个构建在Hadoop基础设施之上的数据仓库,可以使用类SQL语言HQL对HDFS/HBase上的数据进行查询。值得注意的是,Hive本身并不存储数据,数据仍然是存储在HDFS上的,Hive只是将HDFS上的数据以结构化表的形式呈现出来,在此项目中主要用来提供查询所需的元数据。

OLAP引擎——Presto

Presto与Hive一样,同样由Facebook公司研发并开源。使用Hive的元数据,提供类SQL方式查询。因为支持海量数据灵活的查询方式,通常用于即席查询。由于优化了查询引擎,其查询速度通常是Hive的十倍以上。

电力项目中大数据技术的典型应用相关推荐

  1. 盘古开源:计算机信息安全中大数据技术的应用策略

    时代经济的不断变革促进互联网的融合发展不断加快,计算机网络的大数据时代来临.人们的信息数据在这一阶段被紧密互联,给实际的网络发展提供了一定动力,但同时其中存在的隐私安全问题也不容忽视.本文从大数据背景 ...

  2. 2022年深圳技能大赛-大数据技术应用职业技能竞赛介绍

    01竞赛项目 大数据技术应用 02竞赛标准 参照广东省第二届职业技能大赛大数据技术应用赛项标准,结合新时代行业企业发展情况,适当增加新知识.新技术.新设备.新技能的相关内容,由执委会组织专家制定,具体 ...

  3. Hadoop与大数据技术大会 2012

    全体会议 大数据的挑战问题和发展趋势程学旗 Hadoop Present and FutureEric Baldeschwieler 从战略角度解读大数据的机遇潘越 电信运营商基于大数据的商业智能应用 ...

  4. 解决方案和项目的区别_沃尔玛用大数据提高销售额,云计算和大数据技术之间的区别汇总...

    自从<纽约时报>发表有关沃尔玛如何利用大数据分析来最大化其销售额的文章以来,人们就对大数据充满了狂热.零售商发现飓风期间流行的糖果品牌Pop-Tarts的销量激增,并利用此知识增加了利润. ...

  5. 电能管理系统运用互联网和大数据技术,为电力运维公司和售配电公司提供变电所运维云平

    Acrel-3000WEB电能管理系统在扬州某年产3GW高性能太阳能光伏组件项目 安科瑞 崔远航 摘要:在信息时代,电力信息系统的应用促迚了电力企业的収展,增强了电力系统运行的安全性与稳定性,对满足用 ...

  6. 中国工程院院士谭建荣:工业大数据与定制化设计—关键技术与典型应用

    5月5日,"2017中国工业大数据大会·钱塘峰会"在杭州国际博览中心举办.本届峰会以"数据驱动创新 融合引领变革"为主题,围绕工业大数据展开分享与交流.中国工程 ...

  7. 百分点大数据技术团队:乘风破浪 海外数据中台项目实践

    编者按 踏上一带一路的新丝路,北京百分点信息科技有限公司从2016年开拓海外业务,以大数据技术为基础,结合中国先进的数据治国理念,用数据智能推动社会进步.三年时间,百分点海外团队在非洲某国实施大数据项 ...

  8. 基于大数据技术之电视收视率企业项目实战(hadoop+Spark)

    基于大数据技术之电视收视率企业项目实战(hadoop+Spark) 网盘地址:https://pan.baidu.com/s/1bEeSB1Y9nmjzctnbJMcBkg 密码:dohg 备用地址( ...

  9. 志翔科技亮相2022数博会 工业大数据技术支撑电力数智化

    2022年5月26日,2022中国国际大数据产业博览会(简称"数博会")线上开展,工业大数据企业志翔科技亮相云展会,展示了公司工业大数据产品在电力行业的应用和成果.自2018年志翔 ...

  10. 电力大数据技术框架整理

    随着社会现代化不断推进,出先了很多例如大数据和人工智能等新型技术,这些技术正在为越来越多的行业赋能.电力在我们生活中可以说是处处不在,为了提供更加便捷智能的服务,电力行业也出现了许多需要解决的问题.那 ...

最新文章

  1. 深度学习机器臂控制_深度学习新进展:可自建任务解决模型的机器人问世
  2. 常用电脑密码破解技巧
  3. Oracle CBO 与 RBO
  4. linux rs232触摸屏驱动程序,Linux下的触摸屏驱动
  5. 前后台传值乱码问题解决
  6. 深度学习:用于multinoulli输出分布的softmax单元
  7. 微软CNTK 2.0版本发布,支持C#
  8. xml文件转换成图片_怎样能把PDF文件转换成图片?
  9. Linq中dbSet 的查询
  10. 【细节实现 回文串12】LeetCode 564. Find the Closest Palindrome
  11. 可持久化线段树(主席树)总结及板子
  12. mktime()的格式
  13. Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
  14. 河南大学软件学院宿舍楼综合布线设计方案
  15. Rational.Rose7.0系统软件
  16. 机器视觉——光源选型
  17. shiro的认证过程
  18. 修改Windows的Internet时间服务器使时间同步
  19. 独立站的免费流量玩法
  20. 手机cpu性能天梯图2022

热门文章

  1. 英特尔收购威盛X86业务 兆芯何去何从
  2. 如何学习好游戏建模,游戏建模多要用到一些什么,你知道吗
  3. 与竞争对手产品的竞争分析
  4. 如何在 Windows 11/10 中快速卸载 Microsoft Edge 浏览器?
  5. Ubuntu20.04安装ROS——实现小海龟仿真
  6. 1077 皇宫看守(树形dp)
  7. 国际化多语言跨境电商独立站开发(源码部署)
  8. RS485的一些总结
  9. 建筑能源管理(8)——合同能源管理
  10. 尼康测试软件,[带图片]尼康p7000简单测试