1、张杨/资深开发工程师FlinkFlink 在在B B站的多元化探索与实践站的多元化探索与实践平台建设平台建设增量化增量化AIAI On FlinkOn Flink#1#2#3#1#1平台建设平台建设平台建设基础功能完善基础功能完善lkafkakafka动态动态sinksinkl提交器优化提交器优化新任务构建模式新任务构建模式l算子化算子化智能诊断智能诊断l错误分析错误分析l自动调优自动调优topic1topic2topic3sink1sink2sink3mapkeybykeybykeybyKafkaKafka动态动态sinksinkn 数据倾斜u不同sink的数据差别很大,容易发生数据倾斜问题
2、n 不支持动态增加topicu增加topic需要改代增加sinku增加topic无法兼容checkpointn 持续维护成本高uTopic过多,sql太长难以维护基础功能完善topic1topic2topic3sinkmapudfKafka动态sinkn 动态topic生成usink属性里面支持udf生成topicu无需在sql里面编写多sinkuudf直接对接业务系统数据源n 单Sink数据均匀u每个sink处理数据量一致u没有倾斜问题u单sink维护成本低n 业务效果u多个千亿级分流任务稳定运行基础功能完善提交器优化flink1.8-submitterflink1.11-submitter
3、udf(on hdfs)RouterYarn-jmflink1.12-submittersubmit job graphYarn-tmYarn-tmYarn-tmnetwork classloadercompilen 本地编译u编译消耗资源多u提交器成为大规模故障恢复瓶颈n Flink版本耦合u提交器代码直接依赖flinku需要维护多个版本提交器n udf加载uurlclassloader远程加载不稳定u启动期间hdfs查询压力极大n 上传下载多,提交慢uflinklib多次上传下载uuserlib多次上传下载基础功能完善提交器优化submitteruserlib(on hdfs)Yarn-j
4、mYarn-tmYarn-tmYarn-tmsubmit contextdownload by versionflinklib(on hdfs)downloadcompilen 远程编译u采用application模式提交u修改源码支持udf本地加载上传u修改类加载器部分,严格child/parentn Flink版本解耦u提交器完全拆开flink依赖,纯shell执行u根据任务配置下载对应的flink版本n 资源远程自动下载uFlinklib走hdfs直接分发,client无需下载uUserlib走hdfs直接分发,client无需下载基础功能完善平台建设基础功能完善基础功能完善lkafka
5、kafka动态动态sinksinkl提交器优化提交器优化新任务构建模式新任务构建模式l算子化算子化智能诊断智能诊断l错误分析错误分析l自动调优自动调优SQLSQL优点-简单易上手-好维护缺点-难以定制化-核心功能缺失JARJAR优点-灵活可定制-功能全缺点-入门困难-难以维护算子化算子化优点-简单易上手-可定制-可维护缺点-有一定的理解成本新任务构建模式算子化SQLSQLSQLSQL算子jar1算子jar1n 混合构建u支持sql与jar混合构建任务u兼容纯sql,纯jar开发n 扩展性u在sql除了udf提供了更多扩展性u接口抽象,开发简单,跟udf类似n 支持通用算子u可提供通用算子,拖拽
6、构建任务新任务构建模式平台建设基础功能完善基础功能完善lkafkakafka动态动态sinksinkl提交器优化提交器优化新任务构建模式新任务构建模式l算子化算子化智能诊断智能诊断l错误分析错误分析l自动调优自动调优智能诊断300+users300+users7w+cores7w+cores1300+1300+online jobsonline jobs当前痛点资源配置资源配置初始资源确认困难碎片化严重使用资源周期性变化性能调优性能调优数据倾斜网络资源优化state性能调优错误诊断错误诊断任务失败原因分析修复建议gc性能调优智能诊断n 性能诊断u根据运行时节点metrics自动分析判断任务倾斜