智能制造系统及关键使能技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 大数据与智能制造的关系

3.4.1 制造大数据处理架构

3.4.1.1 Hadoop分布式大数据处理架构

Hadoop分布式大数据处理系统在运行过程中主要是由一个主控节点和若干个从节点组成的,主控节点主要集成在集群主控节点里面,而从节点则由本地Linux文件系统、DataNode等组成。Hadoop平台的基本组成与生态系统如图3-8所示。其中,整个并行计算集群的运行主要是由主节点负责的,同时适配各个子节点当前的进程情况,以降低计算过程中消耗的数据传输资源。计算集群中的各个子节点兼备储存和计算的能力,目的是尽可能地实现在大数据背景下的本地化计算与操作,用以提高系统的计算和处理性能。Hadoop系统设计了实时信息回传的心跳机制,以此来应对可能出现的故障,主要的原理是主节点会定时向各个子节点发送命令信息,在运行正常的情况下,子节点在接收到命令消息后会向主节点进行信息反馈,当主节点长时间没有接收到子节点的反馈信息时,该子节点将会被系统判定为失效。

Hadoop分布式大数据处理系统在应用与解决数据存储及分布式计算算法方面有明显的优势,包括分布式存储系统HDFS、数据仓库Hive、非关系型数据库HBase及并行化分布式算法架构MapReduce等。

1)分布式存储系统HDFS

分布式存储系统HDFS是Hadoop的分布式文件系统实例化的体现,该系统设计的主要思想就是将一个待处理的数据集合按照一定的规则进行合理分解,分解成不同的数据块,然后将数据块分别存储到分布式的节点中,在数据的读取和存储时完成一次存储和调取。分布式存储系统HDFS可以很好地适应大规模用户对存储的数据进行并发操作和访问的特性,为大数据系统处理提供了数据存储端的技术支持。

分布式存储系统HDFS具体的运行框架与结构如图3-9所示。首先对事先获取的处理过的数据传入系统(此处表示虚拟制造资源)按照要求进行拆分,获得大小相仿的数据块,这些数据块在Hadoop系统中会准确存储到不同的数据节点中,通过心跳机制向主节点实时反馈数据块的状态信息。如果出现节点或者数据的缺失,可以通过冗余备份机制,调用主节点在Hadoop下预先备份的数据块进行数据恢复,从而使计算集群正常运行。面对数据的读取和访问,主节点先对多个数据节点进行访问,确定数据节点的数据情况,在正常的情况下,用户通过用户端对系统数据进行访问,在定位到相应的数据节点以后,借助Hadoop中的功能模块对数据进行处理,并向用户进行展示。

图3-8 Hadoop平台的基本组成与生态系统

图3-9 分布式存储系统HDFS具体的运行框架与结构

2)数据仓库Hive

数据仓库Hive是大规模留存数据的数据存储容器,主要是写入Hadoop系统的HDFS之中,针对结构化的数据进行写入和读取访问。以HQL语句进行数据库数据的获取和写入,HQL语句和SQL语句在语法上有很多相似之处,方便用户快速上手,HQL语句可以实现类SQL语句的查询,同时可以将SQL语句映射成MapReduce中的任务来执行,使得MapReduce算法在底线中进行数据操作更加简单。Hive支持JDBC与ODBC接口,这样相应降低了应用的开发难度和成本。

数据仓库Hive的基本运行架构如图3-10所示,其根本是Hadoop中的并行化算法MapReduce。数据库服务端和决策控制端组件构成了Hive中的功能组件。前者可以分成三大事件架构:MetaStore、Driver及Thrift。其中,Hive组件的驱动器就是Drive组件,通过调用Hadoop中并行化计算算法MapReduce分析、编译和操作HQL语句。而数据仓库Hive中的MetaStore是单位数据管控组件,能区分开存储端数据和表格信息数据,可以将两个数据块存入两个分区或者将数据块存到其他的关系型数据库,消除数据之间的关联。为了增加数据仓库Hive的延展性加入了Thrift组件,以满足在一个通用编程调用接口的基础上,实现不同编程语言对数据仓库Hive数据的访问和查询。

图3-10 数据仓库Hive的基本运行架构

对于HBase来说,由于将HDFS作为其底层数据存入的最小单位,也就具有了可以分布式写入和读取的功能。同时,HBase可以实时调用HDFS中的功能,使得其在运行过程中可以保障数据的稳定性和完整性。而对MapReduce而言,它是一种分布式并行化的编程与计算模式,引入了Hadoop,极大地简化了并行计算程序的开发难度。

总而言之,Hadoop分布式大数据处理架构在面对大规模数据的读取、写入及分布式计算时具有明显的优势。但是,由于Hadoop的处理框架是基于硬盘计算的,难以适应大规模迭代过程算法的场景,因而在大规模数据集的处理中只采用Hadoop中数据存储部分的功能模块,计算部分将采用基于内存计算的Spark分布式数据处理架构。

3.4.1.2 Spark分布式数据处理架构

开发一个完整的生态圈就是Spark开发的源头,Spark生态圈使得一个框架可以完成大数据计算的大部分计算分析工作,如图3-11所示。由于主要的算力占用是在Spark计算过程中产生的,这也就减轻了硬盘的数据传输负载压力,对于会产生大规模迭代过程的计算算法有明显的优势,同时该生态圈还兼顾了数据筛选获取、流计算和图计算等多种计算范式,因而和基于硬盘计算的MapReduce相比较,Spark在海量、迭代计算及基于Hive的SQL查询上能够给性能提升带来本质上的变化。

图3-11 Spark生态圈

对Hadoop而言,其并行计算框架MapReduce可以由Spark进行补充,同时可以融合分布式存储系统HDFS与数据仓库Hive等分层存储介质,在加入Hadoop体系后,Spark在计算消耗和拓展性方面会得到较大的提升。与Hadoop相比较,Spark在内存布局、执行策略和中间结果输出、数据格式和任务调度的开销方面有明显的优势。

1)Spark工作机

Spark工作机的集群运行框架如图3-12所示。Driver程序就是用户直接进行的操作程序,每个Driver程序需要与集群中的Spark Content对象进行匹配,从Driver程序开始,借助集群管理器,调用工作节点执行分布式弹性数据集(Resilient Distributed Dataset,RDD)操作。分配系统资源主要由Spark Content进行控制,将获取到的用户任务进行分配。每一个工作节点对应着一个用户任务,是任务的主要完成者,在得到任务时先创建相应的Task执行器,并将任务的执行过程反馈给集群管理器。在集群管理器中完成后续的计算资源合理划分及综合管控,实现并行式分布计算。

图3-12 Spark工作机的集群运行框架

MapReduce模型是Hadoop并行化的计算核心,而Spark在并行化中的计算核心是RDD,RDD是Spark计算框架下各类计算的基础。Spark集群调用RDD进行迭代计算的过程,主要是在各个分区中将相应的RDD通过计算进行转化。RDD计算模型如图3-13所示。RDD有着和HDFS相似的对数据集的划分,也就意味着RDD中也有不同的区。其数据分区是计算过程中的主体与最小计算单元,拆分得到的区的数量与Spark集群的应用程度有着密切的联系。

图3-13 RDD计算模型

2)Spark Streaming数据流处理

Spark Streaming是Spark核心接口的一个对外应用,其特性是传输数据规模大、抗干扰能力强,同时也是一个实时数据流处理系统。Spark Streaming数据流处理模式如图3-14所示。Spark Streaming支持Kafka、Flume、HDFS/S3及Twitter等数据源,获取数据后可以使用Map、Reduce和Windows等高级函数进行复杂算法的处理,可以在文件系统、数据库等存储介质储存处理结果。

Spark Streaming可以将传输进来的数据流进行拆分,将得到的数据段分别进行处理,拆分的主要依据是时间窗口和滑动窗口的值。利用Spark Streaming对数据流进行分段处理如图3-15所示。

图3-14 Spark Streaming数据流处理模式

图3-15 利用Spark Streaming对数据流进行分段处理

3)Spark SQL

Spark SQL是一款利用Spark集群进行结构化数据操作的控件。该控件兼容了HiveQL,甚至可以通过JDBC与ODBC接口来连接Spark SQL。Spark SQL的具体架构如图3-16所示。基于Spark SQL使用Hive本身提供的元数据仓库(MetaStore)、用户自定义函数(UDF)、HiveQL及序列化和反序列化工具(SerDes),使得不同数据之间的融合性、运算性能及架构延展性得以提升,这是其他结构化数据操作工具所不具备的优势。

图3-16 Spark SQL的具体架构

4)Spark MLlib

MLib是Spark机器学习库,使机器学习的可理解性和可伸缩性更好。其中提供了大量常用机器学习算法,包括分类、聚类、回归和降维等,在Spark集群中使用MLlib非常便捷,只需直接调用相应的API使用即可。Spark MLlib算法分类如表3-1所示。

表3-1 Spark MLlib算法分类

3.4.2 制造车间大数据处理系统

3.4.2.1 系统总体设计

可以将制造车间大数据处理系统划分为批处理层、速度层与服务层三层架构,针对各个架构分别进行开发实现。制造车间大数据处理系统开发原理图如图3-17所示。速度层包含的流式处理系统可以进行在线计算得到流式计算结果,而批处理层中的全量数据存储平台可以进行重复计算得到批量计算结果,这两个层是可以同时并发进行计算任务的,这样会缩短制造车间任务数据的处理和分析时间。服务层中的制造数据传输系统将获取到的底层制造车间的制造加工数据传输到制造车间大数据处理系统之中。然后系统会将数据分配到批处理层和速度层分别进行批量计算和流式计算,得到的计算结果会传回到服务层分别以批处理视图和流处理视图的形式进行呈现。最后将两者进行数据融合,由统一接口向外界系统进行传输和展现,如制造大数据实时可视化系统等其他系统。

图3-17 制造车间大数据处理系统开发原理图

3.4.2.2 速度层的设计

速度层的主要任务是完成流式计算,因此处于该层的组件应具备基于时间窗口的数据处理功能。Apache Spark(简称Spark)中的Spark Streaming模块正是为此开发的。此层是在Spark Streaming的Structred Streaming(结构化流)接口的基础上进行开发的。以设备报警数统计为例,其速度层实现原理图如图3-18所示,计算不间断进行,并以5秒的时间窗口为单位执行一次算法。算法以每台设备的身份ID值作为数据流所对应的键值将设备报警数记录下来,同时实时计算输入的数据流并输出结果。数据流的读取使用Spark Streaming的readStream()函数,该函数返回不间断数据流,随后在该数据流上初始化window对象,对象中包含时间窗口的长度、滑动窗口的大小等必要参数,最后对流调用star()方法开始执行。

3.4.2.3 批处理层的设计

相对于速度层的设计,批处理层的实现难度更大,主要原因是需要在批处理任务开始之前,将底层制造车间传输的制造加工数据处理成数据块写入不同的数据节点上。Apache Hadoop(简称Hadoop)目前应用场景十分的普遍,它能够同时提供满足要求的大数据文件存储系统HDFS与分布式计算资源调度器YARN(对于Hadoop 1则是MapReduce框架),因此使用Hadoop作为批处理层的主要组件。批处理层实现原理图如图3-19所示。

图3-18 设备报警数统计的速度层实现原理图

图3-19 批处理层实现原理图

由图可以看出,制造数据传输系统将获取到的制造加工数据传输到HDFS。此时,由于将要进行的批量计算会占用大量的算力资源,所以在进行批量计算之前,需要评估将要占用的算力资源,然后批量计算任务管理器循环获取资源,而批量计算任务管理器将会向批量计算资源管理器发送消息,从而启动新节点资源管理器,分配出足够的算力资源供给将要进行的批量计算任务。

3.4.2.4 服务层的设计

服务层是所设计的系统与外界交互的主要平台,也是向外界提供制造车间大数据处理系统服务的窗口,采用Apache HBase(简称HBase)来实现。HBase是一款基于列族的NoSQL数据库,具有在随机性读取的情况下还能够保持高性能运行的特点,同时面对数据量的动态变化可以自主地进行空间划分的操作,从而保证较高的调用获取性能,极为适合作为所设计系统服务层的应用组件。HBase表的列族内容主要是基于数据点计算指标进行设计的,设计的同时需要考虑内容的组成部分,一般是批量计算和流式计算的结果。每次的计算结果都由一条单独的记录进行存储,当在前述两种计算模式下仍然有一部分的任务结果还没有完成,那么本次的记录会将上一次的计算结果作为内容进行存储。在考虑读取调用效率和系统中模式共存性的基础上进行表格的设计,这样的设计策略也是符合制造大数据处理系统要求的。