1、FLINK 作业的稳定性优化实践邱从贤 腾讯高级开发工程师/Apache Flink Committer|01Flink在腾讯的应用在腾讯的应用02Flink的稳定性介绍的稳定性介绍03稳定性的优化实践稳定性的优化实践04总结总结&展望展望目录目录CONTENT|Flink 在腾讯的应用01|实时计算的应用|Oceanus 平台概况JarSQLCanvasConfigurationTextDeploymentMonitoringFlinkMQYarn/K8SHDFSZooKeeperMQOLAPOnlineServiceOceanus实时计算的应用|营销分析、指标提升运营监控、商业决策产品改进
2、、体验升级从Business Intelligence走向Continuous Intelligence实时计算的应用|在线服务消息队列实时用户行为离线存储推理服务样本拼接模型存储样本存储特征存储离线特征计算实时特征计算oceanustdbankHDFSusDBServiceCache典型应用消息队列Flink 的稳定性介绍02|稳定性介绍|Flink 作业概况HDFSmasterTask-2Task-3Task-1HA 相关心跳checkpoint数据传输稳定性介绍|Flink 作业稳定性可能的影响方面第三方系统YarnContainer 数量Container 的资源使用(CPU,Memo
3、ry,链接数等)HDFS存储量访问量ZooKeeper连接数Flink控制链路Master 和 worker 通信Checkpoint 流程数据链路数据热点反压Flink Bug用户逻辑异常稳定性优化实践03|稳定性优化实践|稳定性减少故障优化 ZooKeeperHA 协议Checkpoint 小文件合并降低影响空间上单点重启Master failover时间上作业启动加速快速发现&恢复自动诊断系统减少故障优化 Zookeeper HA 协议|masterTask-2Task-3Task-1masterTask-2Task-3Task-1优化前优化后减少故障优化 Zookeeper HA 协议
4、|masterTask-2Task-3Task-1masterTask-2Task-3Task-1master减少故障优化 Zookeeper HA 协议|单计算集群中 ZooKeeper 的连接数多个计算集群共用一个 ZooKeeper 集群masterTask-2Task-3Task-1masterTask-2Task-3Task-1masterTask-2Task-3Task-03000026154583降低影响单点重启|HDFSmasterYarnTask-2Task-3Task-1Task-2Task-3Task-11 master 监听 Task 执行状态2
5、master 发现 task-2 异常后取消所有 Task 的执行3 Master 从 ZK 上读取最新检查点地址4 Mater 从 HDFS 上读取检查点元数据5 Master 部署Task 并告知所需恢复的状态Task failover 流程减少故障单点重启|Flink 对网络传输的大量优化,使得网络连接的重置变得困难挑战一:Flink 基于 Buffer 而非Record 进行网络传输,Task 对数据的序列化和反序列化是有状态的。在 Task 中残留数据会导致数据序列化/反序列化异常。如何正常清理网络传输中的残留数据挑战二:Flink 网络传输中存在反压机制。如何避免 Task 由于反
6、压导致无法响应网络重置请求减少故障单点重启|Task-1Task-5Task-2Task-4Task-3Task-1Task-5Task-2Task-4Task-3Master1 故障探测上游 Task 发现 Task 故障后,将对应的网络管道(ResultSubpartition)设置为挂起状态,下游 Task 发现 Task 故障后,忽略异常2 重置上游网络连接Master 向故障 Task 的所有上游发送重置命令,重置发往故障 Task 的网络管道减少故障单点重启|Task-1Task-5Task-2Task-4Task-3Task-1Task-5Task-2Task-4Task-33
7、调度故障 TaskMaster 完成故障 Task 所有上游的重置后,重启调度故障 Task 的执行4 重置下游网络连接Master 收到恢复 Task 的发送的调度请求后,告知下游Task 新 Task 的地址并重置连接减少故障单点重启|全局恢复-Task 粒度单个 Task 故障导致其他Task 吞吐和延迟受到影响单点恢复-Task 粒度单个 Task 故障几乎不会影响其他 Task 的吞吐和延迟作业粒度单点重启保障作业大部分数据仍然得到有效处理050100150138业务感知断流时间(秒)0快速恢复启动加速|MasterTaskTaskTaskTask31s20s39s111sYarn主
8、要瓶颈Master 主线程需要处理 Task 启动阶段大量 RPC 请求Container 拉取文件慢Container 需即时申请解决方案 优化分布式协议,去除不必要的 RPC 请求 合并 Jar 包,减少 Container 启动所需的文件数目 允许额外的备份 Container,避免故障时再去申请部署Task 故障恢复流程(并发度 4691)0500故障恢复时间从201s 减少到 48s快速的感知问题reactive-proactive|问题 日志/指标可能不够(缺少上下文信息)耗时耗力,流程繁琐常见作业的异常处理流程告警查看日志/指标人工解决快速的感知问题reac
9、tive-proactive|NodelostOOMKillerTM GCJM GCHeartbeatTimeoutBarrieralignSycnsnapshotAsyncsnapshotCheckpointexpire快速的感知问题reactive-proactive|NodelostOOMKillerTMGCJMGCHeartbeatTimeoutBarriealignSycnsnapshotAsyncsnapshotCheckpointexpire总结&展望04|总结|稳定性减少故障优化 Zookeeper HA 协议Checkpoint 小文件合并降低影响空间上Master failover有损单点重启时间上作业启动加速快速发现&恢复自动诊断系统展望|稳定性减少故障优化 Zookeeper HA 协议Checkpoint 小文件合并降低影响空间上无损单点重启Master failover时间上作业启动加速大状态快速恢复快速发现&恢复自动诊断系统&恢复非常感谢您的观看|