论文部分内容阅读
随着科技的迅猛发展,走在科技前沿的航空航天领域产生的数据量正在以指数级飞速增长,其处理速度方面面临着巨大挑战。课题研究初期,面对数百GB的二进制试验数据,采用MapReduce并行计算框架实现的多机多线程进行解析计算,其性能远远超越了传统的单机多线程方式的处理能力,很大程度上解决了长时间延迟短板。但是,采用MapReduce仍然存在着以下问题:耗费大量非必要时间提前将完整二进制数据上传至分布式文件系统HDFS;计算结果数据无法实时展示;面对规模列表数据的计算,采用的仍是单机多线程从HDFS上取数据再计算并缓存的方法,具有较大的性能局限性。为了解决上述问题,本文首先从架构方面进行改进。设计基于Kafka、Spark Streaming、Redis分布式架构,进行实时数据采集、实时解析计算以及实时缓存。数据采集由三部分组成,分别是消息队列、消息数据的生产者与消费者,其中生产者是分布在不同试验场区的数据采集点。采用Kafka消息队列实现各试验子系统间高速、低延迟的大规模数据采集,降低系统之间的组网复杂度;实时解析计算引擎Spark Streaming作为消息队列的消费者,将从不同试验场区采集到的二进制数据作为解析计算引擎的输入,将流式数据按照每2秒一个间隔为单位划分成一段一段的数据,并将每段数据转换成解析计算引擎能够使用的弹性分布式数据集(RDD,Resilient Distributed Dataset),然后将解析计算引擎中对流式数据的处理转换为Spark能够进行解析计算的数据集的操作,经过解析计算,将计算结果保存到非关系型内存数据库Redis中;使用Redis实现计算结果的快速缓存,避免数据写入到硬盘,为计算结果的实时展示提供保障。其次在提出整个分布式系统架构的基础上,对数据采集和解析计算的性能进行分析与调优。通过采用Topic多分区(Parititon)、缓存发送数据并压缩等方法从消息队列架构与数据发送两方面进行数据采集过程的调优。通过平衡Spark Streaming数据接收时间窗口与速度、采用Redis连接池等策略,从数据消费、解析计算、数据缓存等数据解析计算过程进行优化。最后在实验环境中对系统进行部署测试,验证本文架构能够避免数据上传的时间浪费和解决无法实时展示解析计算结果问题。测试结果表明基于流式计算架构的新系统性能远好于课题初期MapReduce架构,达到了预期目的。