基于Hadoop的工业大数据存储分析系统

来源:期刊VIP网所属分类:工业设计发布时间:2020-08-18浏览:

  摘 要:工业大数据具有规模庞大、业务复杂等的特点,为数据存储、查询和分析计算带了难度。为了优化工业大数据存储管理,提高系统存储、查询、分析效率,利用基于Hadoop技术针对业务库和实时监控数据库的存储管理进行优化。系统设计业务库的集群化同步存储架构,基于Maxwell组件将MySQL业务库数据实时同步到HBase,实现业务库的读写分离、提高数据查询和数据分析的效率;其次,基于Kafka和Flink对业务库同步数据进行实时计算处理,实现高并发数据写入场景下的低延迟响应;最后,实验进行了HBase和MySQL的性能对比测试,结果表明本系统在大规模数据场景下具有更好的计算效率表现,能够有效进行工業大数据分析存储。

  关键词:工业大数据;Hadoop;Flink;HBase

工业期刊投稿

  引言

  工业数据的存储分析是工业信息化应用、推进智能制造的前提和基础[1],然而工业数据的海量性、增量性为其的存储管理带来了难度,同时也对数据存储的可拓展性、高效性提出了高要求[2]。目前,大多工业信息系统[3-4]通过结构化数据库如MySQL等进行数据存储。面对频繁读写的应用服务,有研究[4]通过备份同步业务库,实现读写分离的架构,从而减轻数据库压力。然而,这种存储管理方式对于复杂业务表的数据分析方面并不友好,需要通过垂直切分或者水平切分进行数据查询。

  大数据存储系统HBase是一种分布式的列式数据库,针对复杂业务的分析具有天然的优势,被广泛地应用在数据存储和分析过程中[5-8]。然而,HBase的存储应用很难直接切入到现有系统中,或是需要将整套技术方案推翻重来。同时,不同于普通应用系统,工业数据因其特殊的应用场景会产生大量的实时监控数据[2],如设备、仪表、定位等。这些实时增量不断增长的时序数据为数据存储的效率提出了要求。此外,在数万台机器毫秒级监控的场景中,服务器每秒需要处理GB级的数据,传统通过负载均衡进行实时计算的处理方式已经达到瓶颈。

  为此,本文提出了一种工业大数据存储管理与分析系统,基于Hadoop平台构建数据存储平台,通过Maxwell实时读取MySQL的数据日志写入Kafka消息队列,并通过Flink消费处理同步到HBase,在不影响当前系统业务库的同时提高数据查询和存储管理效率。

  1 相关工作

  1.1 Hadoop平台简介

  从狭义上来说,Hadoop[5-8]是一个由Apache基金会所维护的分布式系统基础架构,而从广义上来说,Hadoop通常指的是它所构建的Hadoop生态,包括Hadoop核心技术以及基于Hadoop平台所部署的大数据开源组件和产品。这些组件实现大数据场景下的数据存储、分布式计算、数据分析、实时计算、数据传输等。

  Hadoop的核心技术:HDFS、MapReduce、HBase被誉为Hadoop的三驾马车,更为企业生产应用带来了高可靠、高容错和高效率等特性。其中,HBase是一个可伸缩、分布式、面向列的数据库,和传统关系数据库不同,HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

  1.2 Flink引擎简介

  Flink[9]是一个基于内存计算的分布式计算框架,通过基于流式计算模型对有界和无界数据提供批处理和流处理计算。在实时计算方面,相比于开源方案Storm和Spark Streaming,Flink能够提供准实时的数据计算,并能够将批处理和流处理统一,实现“批流一体”的整体化方案。这种架构使得Flink在执行计算时具有较低的延迟,Flink被誉为继Hadoop、Spark之后的第三代分布式计算引擎。

  1.3 Maxwell简介

  Maxwell是一个能实时读取MySQL二进制日志binlog、并生成json格式的消息,作为生产者发送给Kafka、RabbitMQ、Redis、文件或其它平台的应用程序。目前,常用的binlog解析工具还有canal、MySQL_streamer,canal由Java开发,性能稳定,但需要自己编写客户端来消费canal解析到的数据;MySQL_streamer由Python开发,但其技术文档比较粗略,对开发过程并不友好。

  2 系统总体设计

  系统架构设计:为了实现大规模工业数据的高效存储,设计基于Hadoop的工业大数据存储管理系统总体架构,共包括前端集群、后端业务集群和数据计算集群,具体存储系统架构如图2所示。

  系统主要采用前端界面和后端业务分离的思想,在前端集群中,由Nginx负责请求的反向代理和负载均衡,分别指向静态文件服务器或Web服务器,实现网页相关界面的显示与交互。前端集群通过远程调用的方式与后端业务集群进行通信,实现相关业务操作、MySQL数据库交互操作、数据计算与结果缓存到Redis等操作。对于后端业务操作中的数据计算环节则由数据计算集群负责,如:实时同步业务库、设备数据实时计算等。

  在数据计算集群中部署了Hadoop平台(HDFS、HBase、Yarn)以及Flink、Kafka、Zookeeper等组件。其中HDFS负责进行底层数据的存储,具体由HDFS的DataNode进行文件分片多备份存放,由NameNode进行元数据管理和文件操作管理,同时通过Zookeeper注册两个NameNode并实时监控状态,防止一方故障立即切换到另一个,从而保证NameNode的高可用性。HBase负责对同步业务库和时序数据库进行存储,由HMaster管理多个RegionServer进行数据维护和查询,底层由HDFS进行存储。对于实时计算部分通过Kafka Broker接受Kafka生产者生产的实时消息,再通过Kafka消费者Flink进行处理计算,其中Kafka的生产、消费进度由Zookeeper进行记录。Flink不仅提供实时计算,同时提供离线批量计算,其计算过程通过Yarn申请计算资源,具体由ResourceManager管理资源并分配到NodeManager上进行计算。

  3 工业大数据存储管理系统

  3.1 基于Maxwell的业务库同步设计

  为了缓解基础业务库的读写压力,提高复杂业务表的查询分析效率,系统利用Maxwell实时监听MySQL的binlog日志,然后解析成json格式发到消息队列Kafka,再通过Flink消费Kafka数据存储到HBase,从而供其他后端分析业务进行读取、查询。基于Maxwell的业务库同步设计具体过程如图3所示。

  其具体实现步骤如下:

  (1)编辑MySQL配置文件my.cnf,开启binlog功能;

  (2)创建Maxwell用户并赋权限;

  (3)启动Kafka集群;

  (4)修改Maxwell的config.properties文件,配置MySQL数据库连接信息、配置producer类型为Kafka、配置Kafka集群连接信息和topic、配置同步业务库信息;

  (5)启动Maxwell,开始监听;

  (6)创建Flink消费Kafka任务,对Maxwell产生的数据进行实时处理写入HBase。

  3.2 基于Kafka和Flink的实时计算

  对于实时同步的MySQL业务库binlog数据,Maxwell首先進行解析传入Kafka消息队列,然后通过Flink对这些实时产生的业务库同步数据进行消费,实现写入HBase中。具体步骤包括:

  (1)在Kafka中创建消息订阅主题“maxwell”,定义副本数2个,分区数9个。Maxwell作为生产者对MySQL的binlog文件进行解析成json格式数据,再发送到“maxwell”这个主题下。

  (2)服务器端配置连接信息,包括:Flink流式处理环境、Zookeeper的集群信息、Kafka集群信息、消费者组信息、数据格式等。

  (3)通过Kafka Flink Connector API创建线程池对接Kafka,将Maxwell的同步数据实时写入HBase。通过Flink的DataStream算子的map过程处理每一条消息,分别调用HBase API执行数据写入操作。

  4 系统实现

  4.1 集群环境部署

  系统在1个主节点、6个计算节点上搭建Hadoop集群,同时部署MySQL主备节点、Kafka、Flink、Maxwell等组件。各节点配置包括:CentOS 7.3 64位操作系统、Intel(R) Xeon CPU 2.4GHz 4Core的CPU、24GB内存、1TB硬盘,Hadoop版本为Hadoop 2.6.0,Flink版本为Flink 1.9.0,MySQL版本为MySQL 5.6。

  推荐阅读:工业控制系统论文怎么发表SCI期刊

期刊VIP网,您身边的高端学术顾问

文章名称: 基于Hadoop的工业大数据存储分析系统

文章地址: http://www.qikanvip.com/gongyesheji/52886.html