论文部分内容阅读
随着互联网的高速发展,数据急剧增长,低时延高吞吐的分布式流处理引擎应运而生。对于分布式流处理引擎而言,能应对服务器宕机、数据波动变化大、操作复杂度变化等情况显得格外重要。为了提供高可用且高效的分布式流处理服务,当前有的流处理引擎将数据流切分成一系列的分片,再对分片进行批处理。然而,这类系统并不能很好的应对流量波动、集群处理能力波动、任务复杂度波动的情景。 本文提出了一个基于反馈控制的动态分片流处理引擎来调节分片大小,能够根据流量、计算能力的波动自适应调节分片大小,达到不影响系统吞吐率的同时让端到端处理时延尽可能的低。本文的主要贡献包括如下三个方面: 1)提出了基于反馈控制的动态分片策略。首先提出了一个基于反馈控制的模型,并将自动化控制领域的PID(proportional-integral-derivative,比例-积分-微分)控制器引入分片调整策略中,提出了更适用流处理场景中的RelaxedPID控制算法。然后提出了多并发度下的稳定条件和稳定域,并以此为基础实现了多并发度下的反馈控制算法。 2)设计了一个基于反馈控制的动态分片流处理引擎。现有的基于静态分片的流处理引擎,通过预先配置好的参数(或是时间间隔或是记录条数)来对流量进行分片,这样的方式并不具有很好的鲁棒性。虽然有了一些基于动态分片的流处理引擎的相关工作,要么效果不太好,要么因为转换成数学模型求解而导致本身的一些不足。本文设计了一个基于反馈控制的动态分片流处理引擎,能够根据流量波动和集群计算能力波动自适应调节分片大小,收敛速度和响应变化速度快,因此有更好的鲁棒性。 3)基于反馈控制的动态分片流处理引擎在Spark Streaming上的实现。首先,在SparkStreaming上实现了一个动态的作业生成模块。其次对Spark Streaming已有的Window机制进行了改进,提出并实现了Elastic-Window。Spark Streaming中有普通的micro-batch和window两种数据处理模型,window依赖于micro-batch。要实现动态地调整micro-batch而又不影响window的功能是一个难点。Elastic-Window解决了这个问题,并保证了API(Application Programming Interface,应用编程接口)与原生Spark Streaming一致,主要功能一致。最后在Spark Streaming下实现了多并发度的基于反馈控制的调整算法,从多个角度进行的实验对比证明了算法的有效性。