基于ETL工具在工业数据治理的研究
摘 要:现今,随着工业物联网、大数据技术被广泛应用在工业企业MES系统中,为了实现工业数据价值和数据集成,需要使用ETL(extract-transform-load,ETL)工具对工业数据进行治理。同时,随着MES系统对实时数据的需要,对实时数据治理提出了更快更高的要求。
针对上述问题,本文使用ETL工具设计并实现一个实时治理工业数据的过程和方法。该方法以MES系统为载体,使用ETL工具,底层采用开源的工业边缘网关Neuron和消息中间件实现实时数据的发布与订阅。
关键词:ETL;工业互联网;MES
引言:阳春新钢铁炼钢厂MES系统建设以来,对数据治理统一采用数据转储的方式,该方式使得对实时工业数据的监控存在较大的延迟,由于生产节奏不断地提升现场对数据的及时性越来越高,部分数据监控难以满足现场需求,为此需要设计一套对工业数据治理的实时消费平台。
工业互联网数据治理目前是工业行业进一步发展必须面对的重要问题之一。选用商业软件进
行治理虽然可以获取短期便利,但长远来看存在非技术的风险。所以在技术条件和硬件条件允许情况下,采用开源平台是自行建设工业数据治理工具的不二选择。
1 ETL的转换与作业
ETL作为工业数据来源与数据消费层,其数据来源复杂,因此必须采用一种简单的设计将ETL工作加以定义。Kettle作为开源软件将ETL抽象为转换和作业两大类动作[1]。
1.1 ETL的转换
转换处理的对象是工业数据流,由输入、处理、输出三个基本步骤组成[1]。步骤是转换中的最小单位。步骤的种类很多,包括输入、输出等[1]。在本文设计中一个转换由消息中间件EMQX的MQTT协议作为输入,然后数据流按照先后顺序通过Kettle的JAVA对象进行处理并输出至Redis非关系型数据库。
1.2 ETL的作业
作业是更高层次的流程控制组件[2]。作业通过跳转把作业项连接起来,这些作业项按照预期
的执行顺序进行排列,形成作业流[2]。作业项是作业内的一个执行单元,每个作业项用于实现自定义的功能。一个作业由开始、输入、转换、作业项、条件分支、完成(成功)多个作业项构成。在本次设计中使用了开始、输入、转换、输出、完成五个作业项,其中在转换中使用了JAVA对象集成了自定义的JAVA代码,将MQ消息实时转发至Redis非关系型数据库。
2 工业边缘网关与消息中间件
2.1 工业边缘网关
工业边缘网关是连接互联网与物联网之间的核心服务,在工业互联网中起着承上启下的作用。工业边缘网关可根据具体的协议类型将工业设备数据统一集成至边缘层,例如PLC、工业传感器、工业摄像头等等。在边缘层可安装边缘计算服务对数据进行清洗后在统一上传至消息中间件或者云端服务。在本次设计中采用了开源的工业边缘网关Neuron作为工业边缘网关。
2.1消息中间件
由于工业数据格式、协议的独特性与数据传输实施缺乏规范等原因,必须使用消息中间件
将边缘网关数据转换为统一协议和传输格式,以便提高后续开发的一致性与便捷性。IBM开发的MQTT轻量级信息传输协议,凭借其传输可靠、高及时性、小成本支出优势在各类物联网场景中广泛应用,成为物联网通信协议标准的竞争者[3]。MQTT协议是一种基于发布-订阅模式的消息协议,在TCP/IP协议簇的应用层中附加主题标签,客户端与服务端进行消息代理组成MQTT协议,图1是MQTT协议的基本结构。在本次设计中采用了开源的消息中间件EMQX作为消息中间件。
图1MQTT协议的基本结构
3 平台构建
本次平台搭建使用Kettle作为ETL工具,Neuron作为工业边缘网关,EMQX作为消息中间件,Redis作为数据存储,实现工业数据实产实消,提高工业数据及时性与价值。
3.1 工业互联网层构建
工业互联网层由工业边缘网关与消息中间件组成,主要作用将PLC与边缘网关进行数据通讯,在消息中间进行数据传输格式的统一并将数据发布至MQTT服务器端以便其他客户端进行数据消费。开源的Neuron提供了可插拔的协议转换,本设计使用了MODBUS TCP标准传输协议。根据物理网关的IP与端口号进行设备的绑定,分析现场需求将所需的采集地按地址协议写入Neuron网关中。如某个流量点位地址为30001,该点的物理网关地址为192.168.X.X中。绑定设备地址填写192.168.X.X,端口号填写502,点位地址根据Neuron网关规则填写1!30001。
与此同时EMQX的消息中间部署可与Neuron解耦部署,EMQX服务提供物联网设备接入、协议处理、消息路由、数据存储、流数据处理等核心能力。在EMQX开源社区下载源码进行部署之后由Neuron自定义MQTT主题上传至EMQX消息中间件中,以供MQTT客户端进行订阅消费实时数据。图2是Neuron服务的设备配置与上传MQTT配置
图2 服务配置与MQTT配置
3.2 ETL工具部署与应用
Kettle是JAVA开发的,在进行ETL部署时需要安装JVM环境。在Kettle的发展历史进程中直到Kettle9.0版本才开始具备MQTT协议与其他流式数据接入的功能,所以在本设计中使用了Kettle9.0版本的ETL工具。
在Kettle中转换步骤中选择MQTT consumer填写MQTT信息,包括连接字符串、主题与附加信息(见图3),在订阅主题数据变化后调用其他转换。
开源mqtt服务器图3 MQTT信息
在主题数据发生变化的同时调用hand.ktr的转换,在该转换中首先获取来自MQTT主题流式数据,通过Get records from stream步骤把流式数据读取至该转换中,随后按照步骤运用JSON output步骤将流式数据直接封装为标准的JSON数据集,最后调用JAVA代码对象,在JAVA程序中将JSON解析为标准的键值对的同时把键值对写入远端服务器的Redis中,如图4所示。后续可由帆软平台的Redis插件读取工业实时数据,平台框架设计图见图5。
图4 流式数据转换
图5 平台框架设计图
3.3 合理调整服务参数,提高平台稳定性
在研究过程中由于使用了开源软件的初始参数,在进行大量数据压力测试时导致平台响应过慢,后续调整了Redis的连接数据与超时时间和回收连接的间隔时间与Kettle的最大申请服务器内存等参数,在后续不断新增实时点位时不影响平台的稳定性。
4 结论
工业数据在工业企业信息化中具有极为重要的地位,如何把工业数据有效性与完整性进一步提升需要通过大数据工具进行探索。在本设计中运用了ETL与非关系型数据将工业数据的刷新间隔频次缩短至1-3秒,为原有系统架构的十分之一,同时可集成于帆软平台进行秒级刷新,成功将逻辑数据与实时数据处理进行合理的解耦与集成,在未来的工业信息系统架构中还在不断探索边缘计算在数据清洗与提高算力中的应用,未来工业大数据的架构与应用必将推动工业生产。
参考文献:
[1]赵建勋.基于Kettle的数据整合研究与实践[J].西安文理学院学报(自然科学版),2020,23(3):28-31,36.
[2]谷敏、陈佳.开源大数据ETL工具的模块化组件构建技术研究[J].信息记录材料,2020,21(12),173-174
[3]郭翠娟,暴宁,荣锋.基于MQTT的物联网平台研究与设计[J].计算机工程与设计,2022,43(8):2378-2384.
第一作者简介:赖正棱,男,本科生学历,软件工程师中级职称,主要从事数据采集与MES信息系统的研究,现任炼钢厂生产技术室信息技术岗位。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论