《方勇-Flink OLAP作业调度和查询执行的改进.pdf》由会员分享,可在线阅读,更多相关《方勇-Flink OLAP作业调度和查询执行的改进.pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、方勇/字节跳动基础架构工程师Improvements of Job Scheduler and Improvements of Job Scheduler and Query Execution on Flink OLAPQuery Execution on Flink OLAP背景背景BackgroundBackground问题和分析问题和分析Problems Problems&A&Analysisnalysis调度执行优化调度执行优化Scheduler&ExecutionScheduler&ExecutionOptimizationOptimization未来计划未来计划FutureFut
2、ure#1#1#2#2#3#3#4#4#1#1背景背景BackgroundBackgroundHTAP Architecture In ByteDanceHTAP Architecture In ByteDanceMySQLProxyAP EngineCatalogConnectorMetaServiceHTAP StoreOther HTAPComponetsSubmit QueryFetch ResultSubmit JobFetch ResultScanFetchFlink SQLGatewayFlink ClusterWhy Can Flink For OLAPWhy Can Flin
3、k For OLAPPrestoPresto ClusterClusterFlink OLAP Flink OLAP ClusterClusterFlink Session Flink Session ClusterClusterTaskManagerFlink sql gatewayFlink sql gatewayFlink sql gatewayFlink sql gatewayConnectorSchedulerPolicyVSVSResourceManagerJobMasterCatalogTaskManagerDeploymentFailoverFlinkFlinkSessionS
4、essionClusterClusterWorkerParserOptimizerParserOptimizerParserCoordinatorCoordinatorOptimizerJobManagerSchedulerPolicyMetadataManagerResourceManagerWorkerConnectorDeploymentFailoverMPPMPPJob PlanJob PlanRuntimeRuntimeManagerManagerExecutionExecutionManagerManagerFailoverFailoverManagerManagerJobMana
5、gerJobManagerWhy Choose Flink In HTAPWhy Choose Flink In HTAPFlink OLAP Flink OLAP ClusterClusterFlink Session Flink Session ClusterClusterTaskManagerFlinkFlink SQL gatewaySQL gatewayFlinkFlink SQL gatewaySQL gatewayConnectorSchedulerPolicyResourceManagerJobMasterCatalogTaskManagerDeploymentFailover
6、FlinkFlinkSessionSessionClusterClusterParserOptimizerParserOptimizerJobManagerJobManager引擎统一Streaming Batch OLAP生态支持跨数据源查询性能优势TPC-DS 基准测试#2 2问题和分析问题和分析Problems&AnalysisProblems&AnalysisRest 协议,SQL 查询特点问题要求模式架构Session On K8s,MPPBatch+Eager Scheduler秒级和毫秒级小作业作业频繁启停,资源碎片Latency+QPS 要求现状和问题现状和问题接入How?Ho
7、w?Source_Source_SinkSinkSourceSource-SinkSinkWordCountWordCountJoinJoinSource_Source_Tokenizer_Tokenizer_LocalAggLocalAggSource_Source_Tokenizer_Tokenizer_LocalAggLocalAggSource1Source1Source2Source2Source3Source3Join1Join1Join2Join2Sink1Sink1测试用例1.从业务查询复杂度出发,设计三组作业2.计算节点并发度128,数据量极少测试环境5台物理机,Flink
8、Standalone 集群1个Session 集群Flink 集群共1.25W个 slotBenchmark Client 多线程提交作业统计10分钟完成的作业数以及作业平均 Latency调度调度 BenchmarkBenchmark7.811.380.4416.884.261.1117.325.861.9417.197.532.1705101520Source-SinkWordCountJoinQuery QPS141632127.6721.62288.3235.43937.413625.24922.22735.968459.281856.794266.4415987.7905000100
9、001500020000Source-SinkWordCountJoinQuery Latency(MS)141632Client 线程数Client 线程数调度调度 BenchmarkBenchmark分阶段优化分阶段优化作业管理作业管理资源申请资源申请任务执行任务执行#3 31.1.作业管理优化作业管理优化2.资源申请优化3.任务执行优化4.Benchmark调度执行优化调度执行优化Scheduler&Execution OptimizationScheduler&Execution OptimizationDispatcher Dispatcher 管理优化管理优化执行执行线程池线程池现
10、状及问题现状及问题InitializeInitializeJobJobPreparePrepareJobJobFinishFinishJobJobStartStartJobJob线程池太小线程池太小作业作业执行步骤执行步骤单点处理瓶颈单点处理瓶颈线程池太忙线程池太忙InitializeInitializeJobJobPreparePrepareJobJobFinishFinishJobJobStartStartJobJob作业作业执行阶段执行阶段IOIO线程池线程池StoreStore线程池线程池执行执行线程池线程池优化方法优化方法加大池子加大池子单点处理单点处理步骤拆解步骤拆解增加独立增加独
11、立线程池线程池优化思路和实现优化思路和实现Netty/RestNetty/Rest线程池线程池Netty/RestNetty/RestPoolPoolDispatcherDispatcherActorActorAkkaAkka线程池线程池DispatcherDispatcherActorActorJobManagerJobManager 内存优化内存优化心跳检查心跳检查资源超时资源超时AkkaAkka 线程池线程池任务队列任务队列已结束已结束作业作业现状及问题现状及问题AkkaAkka 线程池线程池任务队列任务队列已结束已结束作业作业本地任务本地任务管理管理增加本地增加本地任务管理任务管理作业
12、结束作业结束及时清理及时清理结束时清理结束时清理FullGCFullGC 消失了消失了优化和实现优化和实现对象太多对象太多FullGCFullGC运行中运行中作业作业运行中运行中作业作业更多更多定时任务定时任务运行中运行中作业作业运行中运行中作业作业本地任务本地任务管理管理本地任务本地任务管理管理心跳检查心跳检查资源超时资源超时更多更多定时任务定时任务#3 31.作业管理优化2.2.资源申请优化资源申请优化3.任务执行优化4.Benchmark调度执行优化调度执行优化Scheduler&Execution OptimizationScheduler&Execution Optimization
13、Batch Batch 申请资源申请资源Job1Job1Job2Job2s1s1s3s3s5s5s2s2s4s4s6s6ResourceResourceManagerManagerDeadLockDeadLockJob1Job1Job2Job2ResourceManagerResourceManagerslot1slot1slot2slot2slot3slot3slot4slot4Job1Job1Job2Job2s1s1s3s3s5s5s2s2s4s4s6s6SlotSlot 粒度粒度 VS BatchVS Batch 申请资源申请资源slot4slot4SlotSlotBatchBatchB
14、atch Batch 申请难点申请难点跟跟 slot slot 粒度申请兼容粒度申请兼容Batch Batch 申请“事务性”申请“事务性”:申请申请/取消等取消等s1s1s3s3s5s5s2s2s4s4s6s6ResourceResourceManagerManagerWaitWait#3 31.作业管理优化2.资源申请优化3.3.任务执行优化任务执行优化4.Benchmark调度执行优化调度执行优化Scheduler&Execution OptimizationScheduler&Execution Optimization作业间连接复用作业间连接复用TaskManager2TaskMan
15、ager2JobAA.Task1.1A.Task1.1A.Task1.2A.Task1.2A.Task2.1A.Task2.1A.Task2.2A.Task2.2TaskManager1TaskManager1JobBB.Task1.1B.Task1.1B.Task1.2B.Task1.2B.Task2.1B.Task2.1B.Task2.2B.Task2.2ChannelChannelChannelChannelNo ReuseNo Reuse现有问题现有问题复用难点复用难点频繁创建和关闭连接频繁创建和关闭连接影响查询影响查询 Latency Latency 和和 QPSQPSCPU CPU
16、 资源增高和波动资源增高和波动稳定性影响稳定性影响(饿死饿死/死锁等死锁等)脏数据处理问题脏数据处理问题连接膨胀和回收问题连接膨胀和回收问题现状和问题现状和问题作业间连接复用作业间连接复用TaskManager2TaskManager2JobAA.Task1.1A.Task1.1A.Task1.2A.Task1.2A.Task2.1A.Task2.1A.Task2.2A.Task2.2TaskManager1TaskManager1JobBB.Task1.1B.Task1.1B.Task1.2B.Task1.2B.Task2.1B.Task2.1B.Task2.2B.Task2.2Channe
17、lChannelChannelChannelChannelChannelPoolPoolLazyLazy CreateCreateReuseReuseVerificationVerificationStatusStatusRecycleRecycleInvalidInvalidBusyBusyIdleIdleChannelChannelReuseReuseAllocateAllocateReleaseReleaseAllocateAllocateReleaseReleasePartitionRequestPartitionRequest 优化优化-BatchBatchTaskManager1T
18、askManager2TaskManager3TaskManager4Task1.1Task1.1Task1.2Task1.2Task1.3Task1.3Task1.4Task1.4Task2.3Task2.3Task2.4Task2.4Task2.1Task2.1Task2.2Task2.2TaskManager1TaskManager2TaskManager3TaskManager4Task1.1Task1.1Task1.2Task1.2Task1.3Task1.3Task1.4Task1.4Task2.3Task2.3Task2.4Task2.4Task2.1Task2.1Task2.2
19、Task2.2现状及问题现状及问题优化方案优化方案从并发度平方到TM数平方消息数量级消息数量级100并发,2TM10000 410000 4PartitionRequestPartitionRequest 优化优化-NotifyNotifyPartition Register ManagerNetwork Connection ManagerTaskManager2TaskManager1Task2Partition Register ManagerNetwork Connection ManagerTaskManager1Task2现状及问题现状及问题优化和实现优化和实现多次重试,数据量级大
20、(并发数平方)重试有等待,增加 Latency主要问题No RetryNo WaitTaskManager2Task1Task1NotifyNotFound+Retry网络内存池优化网络内存池优化TaskManagerNetworkBufferPoolTask遍历总数量巨大遍历总数量巨大O(slotO(slot数数*上游并发度上游并发度)TaskManagerNetworkBufferPoolTaskNo TraversalNo TraversalJoin 测试作业O(千万级别)现状及问题现状及问题优化和实现优化和实现InitializeLocal PoolAllocationSegments
21、ReleaseLocal PoolReleaseLocal PoolAllocationSegmentsLocal Buffer Pool ListCreateDeleteLocal Buffer Pool ListCreateDeleteInitializeLocal PoolTraversal其他更多优化其他更多优化计算调度计算调度优化优化执行计划执行计划优化优化任务任务执行执行优化优化#3 31.作业管理优化2.资源申请优化3.任务执行优化4.4.BenchmarkBenchmark调度执行优化调度执行优化Scheduler&Execution OptimizationScheduler
22、&Execution Optimization7.811.380.4416.884.261.1117.325.861.9417.197.532.1710.52.831.2316.394.773.2219.7413.845.6633.5219.6211.6010203040Source-SinkWordCountJoinQuery QPS2优化前优化前优化后优化后3593736259222736845988953538256000000Source-SinkWordCountJoinQuery Latency(MS)2优化前优化前优化后优化后调度调度BenchmarkBenchmarkClient 线程数Client 线程数#4 4未来计划未来计划FutureFuture未来计划未来计划Flink For OLAPFlink For OLAP稳定性性能功能单节点稳定性优化运行时资源使用优化计算结果管理优化作业和计算线程管理细粒度执行管理Optimizer For OLAPRow VS Column从从0 0-11从从1 1-100100History Server 完善产品化完善慢查询分析诊断THANKS