论文部分内容阅读
随着大数据时代的来临,各领域产生的信息呈现出几何式爆炸增长的趋势,其中有些高速的海量数据需要被实时处理。在这种背景下,流处理系统应运而生。大部分流处理系统采用的是连续处理模型,尽管连续处理模型可以取得较好的计算时延,但在复杂的网络和集群环境中,这种较小粒度的处理模型往往缺少比较有效的容错机制。DStream不同于连续处理模型,它通过将流数据转化成一个个微批次数据,使得该模型可以以较大粒度对数据进行处理,此外将其与批处理、机器学习和图处理等技术结合后则可以应对更为丰富的业务需求,因此相比较传统流数据处理模型而言,DStream模型具有更强的容错性和扩展性。 Spark Streaming系统是基于Dstream模型实现的一个通用流计算框架,它给予了用户很大的个性化自定义的空间。目前,越来越多的用户开始选择使用SparkStreaming系统作为流数据处理工具。对系统进行合理配置可以使得系统获取较为良好的运行效率,然而人工配置系统不仅在系统配置上往往不能达到最优,而且参数配置无法做到根据实际的运行环境进行自适应调整,因此,如何在基于DStream模型的流处理系统Spark Streaming上实现动态配置和管理成为一个重要的研究热点。 针对上述问题,本文从基于DStream模型的流处理系统的动态配置和管理方面展开研究,力求寻找一种优化配置方案使得系统经过动态配置后不仅可以取得较强的性能,而且可以根据系统的运行环境进行自适应调整。基于DStream模型的流处理系统Spark Streaming分为数据准备、数据接收、数据处理三个阶段,本文将针对这三个阶段分别提出对应的动态配置策略,以实现基于DStream流处理系统的全过程动态配置,而且针对集群环境变化进行自适应调整和管理。 1.数据准备阶段:Spark Streaming批处理时间间隔的配置对端到端时延和系统稳定性具有重要影响,因此针对批处理时间间隔的动态配置问题,本文提出了一种基于迭代思想的时间间隔划分方法。首先,根据批次间隔和处理时延关系,制定A,B,C三级调整策略,迅速找到最佳的批次间隔大小;然后以相邻两个批次为依据,采用Aitken迭代法对批处理时间间隔进行快速自适应调整。通过实验证明该方法有效减少了端对端延时,加快了迭代调整的速率,具有较好的稳定性; 2.数据接收阶段:不合理的接收器并行度配置将增加处理时延或降低系统吞吐量,而分配不合理则将引起负载倾斜。针对接收器并行度配置问题,通过分析处理时延、外部数据流速、吞吐量等因素对接收器并行度的影响,提出基于模拟退火算法的动态配置算法LDSA,利用该算法找到最优的接收器并行度。针对接收器分配问题,改进了原来分配策略,提出了对接收器先进行轮询分配再进行加权轮询的方式,避免了资源盲目分配和负载倾斜。通过实验证明该算法有较高的准确率和较快的执行速率。 3.数据处理阶段:合理的缓存配置策略会影响流数据的处理性能。本文针对实时资源提出了基于DAG图的BSP算法,实现了对DStream的自动化缓存配置;并对DStream价值进行分析,提出了基于DStream价值的缓存替代算法,提高了缓存空间的利用率。针对历史数据缓存的处理,将历史数据分为近期数据和远期数据,采用抽样的思想对近期数据进行缓存决策,对远期数据只记录统计信息进一步压缩数据存储。经实验分析该算法任务执行具有较高的执行效率。 通过对上述三个方面进行研究,本文提出了一种基于DStreams模型的流处理系统的动态自适应配置和调整机制,通过该机制,实现了Spark Streaming系统在数据准备、数据接收和数据处理三个阶段的自动配置和自适应调整,从而实现了系统运行最优。