《毛言粲-Trisk:以Task为中心的流处理动态配置的控制平台.pdf》由会员分享,可在线阅读,更多相关《毛言粲-Trisk:以Task为中心的流处理动态配置的控制平台.pdf(58页珍藏版)》请在三个皮匠报告上搜索。
1、毛言粲/新加坡国立大学SANE-LabTrisk:以Task为中心的流处理动态配置的控制平台背景:流作业动态调控挑战:兼顾普适、高效和易用设计:以Task为中心的系统设计实现:基于Flink的Barrier机制评估:Trisk与已有系统的性能对比#1#2#3#4#5#1背景:流作业动态调控流处理的大规模运用机器学习数据分析实时交易流式数据流作业(Stream Job)流处理的大规模运用 长期执行 性能需求机器学习数据分析实时交易流式数据流作业(Stream Job)数据抖动流处理的大规模运用动态重配置(reconfiguration)长期执行 数据抖动 性能需求机器学习数据分析实时交易流式数据
2、流作业(Stream Job)流数据的抖动抖动:输入速率数据倾斜*新兴事件输入流*当前执行逻辑无法正确处理的数据。例如:新型诈骗交易不同类型的重配置技术重配置:输入流ScalingLoad BalancingChange of Logic如何动态的检测数据抖动并使用合适的重配置方法来调控流任务?控制器 流作业的动态调控控制器(Controller)1.监听:监听流作业的运行状态 metrics(例:延迟,CPU util,吞吐量,积压等)2.诊断:采用不同的控制策略(control policies)诊断症状(symptoms)3.重配置:使用不同类型的重配置(reconfigurations
3、)方法动态优化流作业ControllerControl policyMetricsReconfigurations控制平面:控制器管理平台控制平面提供了一个动态管理流作业的平台隐藏系统底层处理逻辑简化控制器的设计和开发ControllerControl policyAPIsControl Plane 控制平面MetricsReconfigurations#2挑战:兼顾普适、高效和易用挑战不同类型的控制策略需要使用不同类型的重配置方法普适性重配置的执行应短时间内完成并尽量不阻塞数据处理高效性API简单易用,用户调用时无须知道系统底层逻辑易用性Flink的原生支持提供了CLI来对流作业进行控制,通
4、过对流作业进行重新部署来动态的重配置流作业 优点:普适性 和 易用性(source code update and resubmit)缺点:重新部署开销大耗时长(resource reallocation,state recovery)ControllerControl policyCLIJob ManagerKill and restartFlink的原生支持SavepointJob ManagerFlink的原生支持Job ManagerSnapshotsFlink的原生支持Job ManagerKillFlink的原生支持Job ManagerRestart#3Trisk:以task为中
5、心的流作业控制平面系统结构概览Control PoliciesReconfiguration APIsPrimitive Operation APIsExecution LogicTriskWorkloadsResourcesPrepare-sync-updateTrisk 抽象+原子操作Prepare-sync-update执行流程常用重配置 APIs+原子操作 APIs普适性高效性易用性Trisk工作流程TriskControl PoliciesCompile工作流程User Code工作流程TriskControl Policies1.AbstractionTriskControl Po
6、licies1.Abstraction2.Update Trisk Abstraction工作流程TriskControl Policies1.Abstraction3.Abstraction2.Update Trisk Abstraction工作流程TriskAbstractionPrepare-sync-updatePhysical Execution Graph工作流程PreparePhysical Execution GraphAffected Tasks工作流程Prepare:基于更新后的Trisk abstraction找出被更新的affected tasks,并准备这些task的
7、新的configurationPreparePhysical Execution GraphAffected TasksSync工作流程Sync:为保证数据一致性,执行期间需全局同步流作业,并暂停affected tasksPreparePhysical Execution GraphAffected TasksSync工作流程Sync:为保证数据一致性,执行期间需全局同步流作业,并暂停affected tasks在Flink中,我们通过barrier机制实现此执行同步PreparePhysical Execution GraphAffected TasksSyncUpdate工作流程Upda
8、te:affected tasks将被独立更新,更新完成后继续运行Trisk的三维抽象D1:Execution logicTrisk的三维抽象D1:Execution logicD2:WorkloadsTrisk的三维抽象D1:Execution logicD2:WorkloadsD3:ResourcesTrisk的三维抽象基于Trisk抽象的重配置定义Scaling定义:通过分配resources来部署新的Task(例 T5),并重分配并行任务之间的Workloads(例 T2,T5)Programming APIs high level APIs我们提供了预定义的reconfigurati
9、on APIs,从而用户可以通过调用这些APIs来设计控制策略Programming APIs low level APIs用户也可以通过三种原子操作(low level APIs)来定义新的重配置方法#4Trisk在Flink上的实现Trisk总体系统架构和组件ControllerTrisk RuntimeStreamManager Trisk TriskJobReconfigCoordinatorFlinkPrepare-sync-updateTaskConfigManagerTCMTCMSystem-level executionsRuntime层:封装并提供APIController:
10、用户自定义控制策略+重配置StreamManager:Trisk runtime的后台+为用户提供APIFlink 系统层:执行reconfigurationJobReconfigCoordinator:维护Trisk抽象到Flink物理配置的映射+协调执行reconfigurationTaskConfigManager:管理并更新Task中相应配置Flink内部的组件架构JobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTas
11、kTaskConfigManagerStreamTaskControl LogicPrepare-sync-updateFlink中重配置执行总览TriggerSyncackdeployupdateupdate实现细节Trisk Abstraction我们对Trisk abstraction所包含的configuration和Flink的JobGraph、ExecutionGraph做了映射Synchronization我们通过Flink的barrier机制实现了重配置执行中的同步来保证一致性Primitive Operations我们利用了Flink原有的机制对stream task进行了动
12、态修改。比如,assign Workload是通过:a.State update:重新初始化一个state backendb.Key mapping update:更新上游task的result partition和当前task的input gateJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskPrepareUpdate JobGraph/ExecutionGra
13、phPrepare:更新Flink流作业Execution planPrepare:更新Flink流作业Execution planJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskPrepareMark as affected tasksSynchronize:Flink中的重配置同步JobReconfigCoordinatorJobManagerTaskConfi
14、gManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskSynchronizeInject barrierJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskPass barrierPause Synchronize:Flink中
15、的重配置同步SynchronizeJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskACKSynchronize:Flink中的重配置同步SynchronizeJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerSt
16、reamTaskTaskConfigManagerStreamTaskPass barrierPause Synchronize:Flink中的重配置同步SynchronizeJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskACKACKSynchronize:Flink中的重配置同步SynchronizeJobReconfigCoordinatorJobManage
17、rTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskACKSynchronize:Flink中的重配置同步SynchronizeJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskUpdateUpdate:
18、更新stream taskUpdate new configurationJobReconfigCoordinatorJobManagerTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskTaskConfigManagerStreamTaskUpdateUpdate:更新stream task#4实验结果1.在Trisk上实现的控制器的总体效果如何,是否能满足控制器的优化目标(比如延迟控制)?2.对比已有的重配置执行技术Flink原生支持和前沿的Megaphone机制,Trisk的执
19、行效率如何?实验设置实验环境:Trisk+Flink-1.10.0实验规模:4个节点的Flink standalone cluster,每个TaskManager配置了8个slots。实验应用:Stock-exchange Word-countTrisk下控制策略更容易实现性能目标延迟感知控制器:通过监听输入流数据的输入速率进行动态的重配置(scaling/load balancing)以实现低延迟股票交易。100 行 代码.所有重配置在毫秒级别完成更好的延迟控制Trisk重配置执行时间短对原作业影响最小与 Flink 上的 Megaphone 相比,Trisk 具有最短的完成时间和相对较高的峰值延迟。与 Flink 上的 Megaphone 相比,Trisk 具有最短的完成时间和相对较高的峰值延迟。在重新配置过程中,Trisk 的吞吐量会下降但恢复得比 Flink 快。Trisk重配置执行时间短对原作业影响最小2021-12-05THANKS