论文部分内容阅读
随着云计算、物联网、移动互联、社交媒体、互联网金融等新兴信息技术和应用模式的快速发展,人们对数据处理的实时要求越来越高,开源的实时流式处理系统Storm因其高可靠性和良好的处理模式,得到了快速的发展,在众多企业平台中得到了广泛应用,然而目前Storm系统中存在着以下几个亟待解决的问题。(1)目前Storm系统没有自动检查任务拓扑结构的机制,也不能自适应地调整任务拓扑;(2)目前Storm系统中默认的调度算法是伪随机的轮转调度算法,没有考虑任务拓扑结构的特殊性,调度过程存在较大的负载均衡问题;(3)现有改进的调度算法只对调度过程的某一过程进行改进,解决了通信流量、资源可用性和QoS等方面的问题,然而并没有很好地解决机器负载不均衡的问题。基于Storm实时流式处理系统,研究任务拓扑优化策略和调度算法的改进,具有较高的理论价值和实际意义。针对以上存在的问题,本文从以下三个方面进行研究工作:(1)针对现有任务拓扑优化方法无法实现自适应调整的问题,本文分析了现有从拓扑结构和任务拓扑参数两个角度优化任务拓扑的方法,最终从任务拓扑参数优化的角度出发,结合瓶颈理论处理流水线工作的思想,提出了基于瓶颈理论的Storm任务拓扑动态优化策略。该策略是从Bolt组件性能饱和度和缓存队列的拥塞情况两个角度出发,获得任务拓扑的性能瓶颈组件,挖尽任务拓扑中存在的其它性能瓶颈,通过修改Bolt组件的任务数量、接收缓存队列长度和发送缓存队列长度参数,来去除性能瓶颈。其中,修改参数的过程是动态的,不需要停止任务拓扑。(2)针对现有调度算法不能有效的解决机器节点间负载均衡的问题,本文分析了默认调度算法的调度过程,并重点研究了基于任务拓扑的调度算法和基于通信流量的调度算法,结合负载均衡的分配策略,提出了基于任务拓扑和通信流量的线程调度算法。该调度算法分为两个步骤,第一个步骤根据任务拓扑结构和组件间通信流量两个方面,对任务拓扑图中各个组件的线程进行划分,第二个步骤,根据集群中机器节点之间的负载均衡,将第一个步骤划分好的线程分配到机器节点端口。该算法不仅能降低整个系统的延时,而且可以减少各个工作节点的通信流量。(3)在实验部分,对上述提出的两种算法进行实验验证。在第一个算法的实验中,使用单词计数任务拓扑进行实验,以系统平均延时和系统吞吐量综合性能作为指标,采用控制变量法,确定算法中权值参数α、β的最佳取值分别为0.12、0.5,并在采用α、β的最佳取值对任务拓扑进行优化之后,对比验证了优化后的任务拓扑在系统吞吐量和系统平均延时的综合性能优越性;在第二个算法实验中,首先确定本文调度算法中的权值γ为0.4,通过本文调度算法与Storm默认调度算法、基于任务拓扑的调度算法以及基于通信流量的调度算法进行横向对比,验证了本文算法在系统吞吐量和系统平均延时的综合性能优越性,以及节点间延时性能的优越性。本文调度算法对比默认的调度算法,Strom系统的平均延时降低了约46%,吞吐量提升了约百分91%,节点间的通信流量降低了约40%。