论文部分内容阅读
随着大数据技术的飞速发展,金融银行业、互联网和物联网等与人们生活联系紧密的行业领域发生了翻天地覆的变化。数据规模迅速扩大,数据计算具有规模性和实时性。在实时计算场景下,Flink流计算框架提供了丰富的算子支持和较好的容错机制,且在资源调度方面做了许多优化,能够对大流量的数据进行实时处理。然而,当面临实时数据流突增的时候,Flink不能根据当前的数据流量进行动态资源调整,从而会导致计算出现瓶颈,无法保证计算结果的实时性。本文针对Flink框架在数据量突增时会出现性能瓶颈的问题设计了一套基于Flink框架的资源调度管理系统,对作业的运行情况进行实时监控,及时发现性能瓶颈进行资源调整,保证数据计算的实时性。该系统主要包括Flink作业监控子系统以及算子资源调度优化子系统。Flink作业监控子系统主要用来实时跟踪作业上各算子的数据输入、输出、作业运行过程中网络缓存使用情况,以及记录算子拓扑关系,为判断算子计算瓶颈提供直接依据。算子资源调度优化子系统是根据收集的监控数据,以及对作业算子的有向无环的拓扑结构进行广度优先搜索,根据Flink作业的反压机制找出性能瓶颈的算子,并对出现性能瓶颈的算子进行优化调度:1)针对Flink在多数据源(如Kafka消息队列)同时消费时引起的Source算子上,数据分区不均匀导致的计算瓶颈问题进行优化,保证数据源(如Kafka分区)在Source算子的均匀分配,减少分配不均导致Source算子的计算瓶颈问题;2)针对非Source算子计算能力不足而引起的性能瓶颈问题进行资源调度,根据监控系统中反映出来的处理能力来调整算子并行度,解决性能瓶颈;3)针对非Source算子在计算过程中出现的数据倾斜导致的性能瓶颈进行优化,设计一套预聚合优化策略,对数据聚合算子进行拆分,进行数据的预聚合处理,降低聚合计算中导致数据倾斜的数据量,并针对算子在多Key场景下的数据倾斜设计了相应的算子资源调度策略,降低数据倾斜对计算性能的影响。最后本文搭建了一套Flink作业运行平台和Flink资源调度的环境,针对Flink出现的各种原因的性能瓶颈问题进行资源调度调整实验,通过一系列实验数据,证明了本文所设计的基于Flink框架的资源调度方法在解决算子瓶颈问题方面有较好的效果,能有效增加系统的吞吐量,保证系统的实时性。