王 翀,陈佳林
(应急管理部信息研究院,北京市朝阳区,100029)
随着信息化、工业化的深度融合与“互联网+”的迅猛发展,科技的进步已引领煤炭行业迈入新时代。互联网+、人工智能和大数据等颠覆性技术的出现,拉开了第四次工业革命的序幕,加速了传统行业变革的进程[1]。推进煤矿智能化,建设智慧煤矿,实现煤炭安全高效绿色开采和清洁高效利用,成为提高煤矿本质安全水平、促进煤矿安全发展的必由之路和煤炭工业转型发展的根本出路。
煤矿智能化是基于现代智慧理论,将物联网 、云计算、大数据、人工智能、自动控制、移动互联网、机器人化装备与现代矿山开发技术融合,形成矿山感知、互联、分析、自学习、预测、决策、控制的完整智能系统,实现矿井开拓、采掘、运通、选煤、安全保障、生态保护、生产管理等全过程智能化运行[2]。
煤矿物联网大数据平台是煤矿智能化的基础和组成部分。来自煤矿生产自动化系统和安全监控监测系统的煤矿物联网海量大数据具备传统大数据5V特征模型[3](Volume,指数据量大,包括采集、存储和计算的量都非常大;Velocity,指数据增长速度快,处理速度也快,时效性要求高; Variety,指数据种类和数据来源多样化,包括结构化、半结构化和非结构化数据;Value,指数据价值密度相对较低;Veracity,指各个数据源的质量良莠不齐,需要严格筛选)。但是煤炭大数据不仅包括物联网大数据,同时还包括煤矿安全生产的过程数据,与经营相关的内部和外部数据,涵盖了煤炭企业生产、经营、安全等整个生命周期中的所有数据及其发生的时间、空间关系[4-5]。正是由于生产环境及过程的复杂性,煤炭行业对数据的采集、处理和深度挖掘等多方面均存在盲点,煤矿企业以及煤矿安全监管政府部门正积极探索煤矿大数据的应用,并开始尝试构建煤矿大数据平台。
当前,我国煤矿大数据平台建设和应用还处于起步阶段,一些学者已从煤矿大数据定义、特点、框架、关键技术、信息化标准等方面进行了探索研究[6-8]。
大数据平台则是数据采集、数据处理与集成、数据分析和解释等过程的综合载体,形成了统一的IPO(Input-Process-Output,输入-处理-输出)模式,是大数据全生命周期发展进程的承载,为大数据深度挖掘提供了可靠支持。目前,在煤矿企业和煤矿监管部门普遍使用的物联网大数据平台技术,按数据使用的不同阶段,划分为数据采集、数据治理、数据分析和数据解释4个阶段[9]。
原始数据流向主要通过内部网络或专用网络逐层向上传输,例如,数据从系统采集上传到矿端系统,从矿端系统上传到分公司系统,再从分公司系统上传到集团端系统。这种逐级上传的方式仅仅满足数据上传的基本需求,但存在数据实时性差、可靠性低等问题。同时由于数据经过多次转发,每次转发都无法避免造成延时,大幅降低了数据的时效性,导致数据传输慢的问题无法根本解决。另外,不同层级的系统可能由不同的厂商建设,而且各层级数据使用方的需求和目标也不一致,导致数据对接困难,易出现漏报、错报现象。
由于数据质量的问题,在数据分析之前需要使用数据治理技术,提高数据质量,减少实际分析所需要的时间[10]。目前数据治理在煤矿行业还属于起步阶段,缺少相关成熟的数据治理系统,而数据质量问题不仅仅困扰煤炭行业,在其他领域和机构,劣质数据也大量存在。国外权威机构的统计表明,美国的企业信息系统中,1%~30%的数据具有各种错误和误差[11]。另外,在数据存储方面,煤矿的安全监测监控系统、生产自动化系统采集数据普遍采用关系型数据库或单机版的实时库存储,无法满足海量数据存储的需求。而且国内外相对成熟的商用大数据治理平台在煤矿行业缺少成功经验,不利于在煤矿行业中大面积推广应用。
煤矿行业的数据分析系统目前还基本采用传统B/S或C/S架构,通常为满足单一业务进行的数据处理,无法适应海量异构数据接入、实时处理和批量实时分析等业务需求。而在大数据时代,数据处理方式出现了三大变革性思维(即要全体数据不要抽样数据,要效率不要绝对精确,要相关关系不要因果关系),也导致数据处理技术的变革[12]。目前,对大数据的处理形式主要分为对静态数据进行批量处理、对在线数据进行实时处理、对图像数据进行综合处理等[13]。
传统行业数据解释和展示平台一般是基于商业或开源的BI平台进行开发,而对于煤矿大数据,基于GIS技术的透明化矿山技术无疑是最佳选择[14]。目前国内外比较成熟的GIS平台主要有ArcGIS、MapInfo、MapGIS、GeoStar、龙软GIS等,采用成熟的商用GIS平台基础上进行二次开发是现阶段GIS开发的主要方法,但是商业GIS的分发方式以及高昂的版权费用,不利于在煤矿企业中大面积快速推广应用[15]。
煤矿物联网大数据平台主要由井下系统、地面系统、视频系统、边缘侧计算和云平台构成。
煤矿物联网大数据平台体系架构如图1所示。
图1 煤矿物联网大数据平台体系架构
(1)井下系统。井下系统主要由煤矿已经建设的智能化生产和安全相关的各类子系统组成。其中,智能化生产系统涵盖煤矿开采、掘进、主运输、辅助运输、通风、大型自动化系统、设备和装备。此类系统的工作数据需要经由OPC、Modbus等工业自动化协议采集,生成消息或半结构化的日志文件,推送到部署在煤矿的数据采集服务上云。安全监控监测系统的数据一般经由上位机直接推送到数据采集服务上云。
(2)地面系统。地面系统主要包括生产集控系统、经营管理系统、安全管理系统等,此类系统的数据包括结构化数据(业务数据)和非结构化数据(矿图、规章制度等文件)。其中,结构化数据通常保存在本地的关系型数据库中,可由部署在边缘侧的数据共享交换代理自动从数据库中抽取,通过数据共享服务(DataX)上传至云端。非结构化数据,采用部署在边缘侧的文件传输服务上云。
(3)视频系统。工业视频系统和视频会议系统实时产生的视频流数据,由部署在边缘侧的视频分析服务进行结构化分析,通过视频识别技术捕捉人员、车辆、环境、危险场所的异常事件,并上传到云端,同时根据预设做出相应的报警、预警、自动关停等处置措施。
(4)边缘侧计算。边缘侧计算是在靠近数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的新网络架构和开放平台。边缘计算将传统集中式的云计算处理方式,改为将计算存储能力下移至网络边缘,面向用户和终端的方式,就近提供边缘智能服务[16]。在智慧煤矿场景中使用边缘计算,可以极大地降低由于数据的回传造成网络的拥塞与负担,实现低时延、高带宽、快速响应,解决单纯采用云架构带来的实时性差的问题。在本系统中,边缘侧计算包括部署在煤矿工业控制网中的数据采集服务器、视频分析服务器、数据库存储服务器和相关网络设备,提供数据采集服务、数据交换代理服务、文件传输服务、视频分析服务等,在第一时间完成数据的采集、缓存、清洗、上传、视频识别、质量审计、预警报警功能。
(5)云平台。根据煤矿的实际情况,搭建在数据中心的私有云资源或直接租用的公有云资源,海量生产自动化系统数据和安全监控监测类数据通过消息队列服务(Kafka)接收入云,管理系统和信息化系统数据由DataX数据交换共享服务直接从代理端抽取,保存到数据仓库。文件、图片和视频片段等非结构化数据通过WebAPI接收,保存在对象存储服务(FastDS)。在消息队列服务(Kafka)中接收的实时数据直接进入实时流式计算服务(Flink)进行分析处理,汇总数据直接进入数据仓库,经过加工后的测点数据进入时序数据库(OpenTSDB)之中保存。部署在云端的二、三维GIS和BI可视化展示平台统一为上层的生产、安全、经营、调度和应急救援等业务系统提供统一的图形展示。
煤矿物联网大数据平台需要覆盖煤矿的感知网络,实时采集煤矿安全监控、人员位置监测、视频监控、冲击地压、水文地质、重大矿用设备等系统的数据,同时结合煤矿生产和安全管理相关信息,为煤矿全维度数据采集与监测提供支撑。从感知网络获取数据主要包括监测点的时序数据(瓦斯、一氧化碳、温度、风速、转速、电流、电压等)和多媒体数据(视频、声音、图像等)等[17]。目前的物联网采集平台主要的难点集中在无法支撑海量时间序列数据的采集。
时间序列数据是一组或多组在时间上存在严格先后顺序的观测值序列,这些序列精准地记录着某个具体参数的实时变化情况,并在一定的时间范围内反映该参数的发展趋势和变化规律[18]。同时,时序数据信息量单一、数据量小,但数量巨大、实时性强,采用传统的B/S或C/S架构的数据处理系统无法满足时序数据的采集需求。采用整合Flume日志收集系统和Kafka消息队列系统的Flafka大数据采集方案可以有效解决这个问题。
煤矿大数据业务需要采集平台同时具备高吞吐量存储和不同业务应用使用消息的能力。Kafka通过分布式高可靠性架构设计保证消息收集的高并发,同时Kafka通过将所有消息持久化存储到容量较大的磁盘中,相比采用内存技术的消息队列,可提供更高的存储能力,更加适合大规模网络流量传输的场景[19]。Kafka消息的使用者Consumer采用Pull(拖)的方式,可以满足多个不同的消费者以不同的频度取得消息,例如,可以同时进行实时数据分析和批处理统计等多项任务。
Flume Agent可以部署为Kafka消息队列的Producer或Consumer,为数据传输通道提供更大的灵活性,减少Producer或Consumer的代码编写,并且更有利于性能的调优。当Flume Agent作为Producer时,还可以直接部署到边缘侧的计算节点直接收集数据,有效减少云端的计算压力和传输压力。Flafka体系应用架构如图2 所示。
煤矿物联网感知数据需要通过传感器获取,但由于传感器自身质量和使用维护问题,导致确保所有传感器长时间高质量工作非常困难。因为传感器故障的出现次数和频率等无法预测,海量的感知数据中很难避免“无效数据”的存在。因此,在数据存入数据库之前,必须进行数据治理工作。煤矿物联网数据特别是与安全相关的报警数据,具有很强的实时性要求,必须实时处理。传统的提取-抽取-加载ETL作业通常是周期性触发,可以完成统计数据的处理,但无法支持海量数据的实时处理,而基于大数据的以MapReduce[20]和弹性分布式数据集RDD(Resilient Distributed Dataset)[21]编程模型为代表的批处理模式也无法满足煤矿数据实时性、低延时的要求,因此需要采用大数据流式计算技术。
图2 Flafka体系应用架构
流式计算将计算任务抽象为数据流模型,具有实时性、易失性、突发性、无序性和无限性的特征[22],能够提供大规模数据的分布式实时处理。目前基于开源技术的大数据流式计算引擎有许多选择,其中,支持流式处理的主流技术有Storm、Samza、Flink、Spark Streaming等,支持批处理的主流技术有Spark Streaming、Hive、Pig、Flink等。两者同时支持的计算平台只有Flink和Spark Streaming,但是Spark Streaming是基于批处理模拟流式计算,Flink则正好相反,对于批处理任务,采用流式计算的方式进行处理[23]。从测试数据上来看,在相同条件下,Flink的流式计算数据处理速度更快,延时更短[24]。
Flink通过使用内存处理技术,改善了Hadoop的性能,在其使用的内存数据结构中,直接包含序列化的数据,而非Java对象,避免不必要的垃圾收集工作。Flink进行批处理的编程模型以数据集Data Set的概念为基础,Data Set通过高阶操作进行转换,批量数据被视为流数据的有限集合[25]。Flink典型应用场景如图3所示。
图3 Flink典型应用场景
图3中Flink流式处理的左侧为数据源输入部分,右边为数据使用方部分。
煤矿物联网感知数据主要包括井下环境感知数据、人员位置数据、灾害感知数据和重大设备感知数据等,随着时间的推进,单日单煤矿采集的数据量可能达到千万级别以上。这些数据具有产生频率快、严重依赖于采集时间、测点多信息量大等典型特点。普通的关系型数据库和基于单机的传统实时数据库无法高效地处理和存储此类数据。时序数据库TSDB(Time Series Database)是存储时间序列数据的高性能数据库,拥有极高的数据压缩能力、极优的查询性能,特别适用物联网场景。数据库基于负载均衡和分布式存储架构,提供高速的数据处理能力、按需的海量数据存储能力、优于传统关系型数据库数百倍的时序数据压缩能力,极大节约了存储空间。
目前,在已经得到应用的时序数据库系统中,比较广泛使用的有基于Hadoop生态的OpenTSDB和商用版的InfluxDB。
OpenTSDB是基于Hadoop生态中的HBase数据库来构建的分布式、可扩展的时间序列数据库[26]。它可以从大量主机或智能设备和应用程序中用非常短的时间收集数千个指标,并轻松存储数十亿个数据点,使得这些数据易于访问和可视化;同时支持通过丰富的数据模型进行识别由一组任意键值对组成的时间序列。由于OpenTSDB是架构在HBase数据库的基础之上,需要搭建和维护基于Hadoop的大数据集群,对系统开发和维护团队要求比较高,比较适用具备一定实力的大型煤矿集团或省级以上的政府监管部门使用。
InfluxDB做为一个商用版的时序数据库,比OpenTSDB支持更多的数据类型,还提供了类似SQL语言的查询功能,内置以时间为中心的函数,用于查询测量值、序列和测点。InfluxDB支持单机和分布式部署,可实现计算能力和存储能力的水平扩展,而不需要构建HBase集群[27]。InfluxDB单机版本可以免费使用和快速搭建,比较适合单一煤矿或小型的煤矿企业感知数据的存储和查询需要。
随着煤矿大数据的迅速发展,对数据的解释技术也提出了更高要求。三维GIS可视化在煤矿动态监测、模拟仿真、辅助决策等方面突显出不可替代的作用。目前,传统的数字矿山三维可视化技术停留在C/S架构,或者基于特定浏览器插件方式的B/S架构,这都无法友好地解决海量异构的数据展示,同时存在系统兼容性差、系统集成困难、无法跨操作系统和跨终端等问题。基于WebGL的可视化技术具有可视化效果好、使用方便、跨平台、跨终端等特点,已经成为当前的发展趋势[28]。主流的Web浏览器已经支持WebGL库的直接加载,方便用户使用。同时,大多数GIS产品开发商都开始使用WebGL技术来实现二维或三维地图的可视化[29]。
Cesium.js是一个开源的、基于WebGL技术、采用JavaScript语言编写、用于地图渲染的JS库。Cesium.js 支持三维地球(3D)、二维地图(2D)和2.5D哥伦布视图;支持动态地理空间数据的可视化;支持自行绘制图形和高亮区域,可无插件支持绝大多数的浏览器和智能手机。
Cesium.js体系结构自下而上包括核心层、渲染器层、场景层和动态场景层4个部分。在这种架构中,上层依赖较低层提供的功能,而上层也重新包装了下层。核心层包含矩阵计算、向量、坐标变换和地图投影。渲染层负责重新打包WebGL使之更加简洁明了。场景层提供了高级的虚拟地球仪功能,而动态场景层提供了数据驱动的可视化工具来完成动态场景渲染。
Cesium库原生支持对影像、三维地形、矢量数据、一般模型、倾斜摄影三维模型、BIM模型可视化,并且可加载符合OGC标准的WMS、WMTS、TMS等服务,另外还提供粒子特效、水波纹特效、天气特效、飞行特效等特效可视化,但其在地下空间可视化方向仍然存在较多不足。通过对地表的半透明化同时添加适合地下的相机操作器,最终基于Cesium实现矿山井上、井下的可视化方法。
煤矿物联网大数据平台基于可伸缩的弹性云部署方案,不仅适用于单个矿井、煤矿公司、煤矿集团的场景,也同样适用于国家、省、市、县各级煤矿监管监察部门大数据应用场景。
目前,平台在国家和省级煤矿风险预警项目以及煤矿企业风险预警项目中得到成功应用。通过对采集的煤矿基础数据、监控监测系统数据、大型机电设备数据、周边环境数据、网络舆情等数据,构建风险指标体系和预警模型,可实现重点监管区域、重点煤矿及其重大风险动态预警。煤矿风险预警与防控系统大数据应用界面如图4所示,国家煤矿安全生产风险监测预警系统大数据应用界面如图5所示。
图4 煤矿风险预警与防控系统大数据应用界面
图5 国家煤矿安全生产风险监测预警系统大数据应用界面
通过开源技术构建的煤矿物联网大数据采集平台,解决了传统IT架构无法解决的煤矿海量数据的采集、分析和解释等难题。
(1)通过基于Flafka的数据物联网采集技术框架,解决了煤矿海量时序数据吞吐量大、采集速度慢等一系列问题。
(2)通过基于Flink大数据流式计算框架,解决了海量物联网传感数据实时处理和实时分析的需求问题,有效地提升了传感器数据质量实时审查和实时预警报警能力。
(3)通过OpenTSDB时序数据库,解决了海量时序数据存储难、压缩比小、读取性能差等问题,大幅提升了感知时序数据的使用效率。
(4)通过基于Cesium.js的三维地理信息系统引擎研发的地图展示系统,有效实现了无插件、跨平台、跨终端的三维地图可视化。