Mao Yancan
Mao Yancan
## 项目简述 Morphling: Flink 流作业的动态资源预测与快速调整 ## 背景 由于流处理作业是长期执行,并且流数据本身会有数据抖动 -- 输入速率会动态的上升或者下降,静态配置的流作业会比可避免的会出现超负载或者过低负载运行,导致流作业的表现不能达到性能需求(SLO)或者不能有效的利用分配的资源。因此基于当前流数据处理行为能够**预测合理的资源**并且进行**快速动态资源分配**是非常重要的。已有的系统比如Ververica的autopilot提供了能够基于CPU utilization或者backpressure并且设置threshold的方式来检测并自动的进行资源分配,虽然这样的方式简单快捷并且工作稳定,但是不能有效的利用已有的流数据处理的信息来预测出合理的资源分配,因此可能需要进行多次动态资源配置来达到合理的流处理状态。并且基于重新部署流作业的机制来实现动态资源分配开销较大耗时较长(资源重申请和状态恢复),从而使得流作业有较长时间处于暂停工作的状态。 ## 目标 我们提议在Flink上实现一个可以根据流数据处理的metrics准确预测资源分配并能快速动态资源分配的流作业控制器,这样的控制器可以动态控制流作业并且让流处理运行更高效并且更加节省资源。 ## 实施方案 我们的项目将主要实现一个可以**根据metrics预测资源分配**并及通过**弹性伸缩部分任务**的方式进行高效动态资源分配的流处理控制器,我们将在基于Flink实现以下三个模块: 1. Metrics Manager: 我们认为能够准确预测资源分配最重要的一点是能够预测出Stream task的最大运行速率,也就是在不影响latency的情况下的最大throughput,从而当流数据输入速率上升或下降的时候我们可以判断出最合适的stream task的数量来处理数据。因此我们会在Flink中封装一个Metrics Manager去收集并测量出不同stream task的最大运行速率,主要是通过理论测量模型:在一个window时间内 处理数据个数/有效处理时间 估算出来的,然后通过我们的控制模型去做决策并预测资源分配。特别的,对于分布式metrics的存取,我们可以通过pravega实现, 2. Control policy:...