快手公司Apache Flink实时计算优化与稳定性提升探索

5星 · 超过95%的资源 需积分: 0 2 下载量 107 浏览量 更新于2024-07-15 收藏 1.45MB PDF 举报
"快手基于Apache Flink的持续优化实践-TSY.pdf" 在大数据处理领域,Apache Flink是一个重要的实时计算框架,被广泛应用于各种实时数据处理场景。快手作为一家领先的社交媒体平台,利用Flink进行实时数据流处理,并在此过程中积累了丰富的优化经验。这篇文档主要涵盖了快手在Flink任务启动优化、Flink稳定性持续优化以及Flink SQL实践与优化等方面的实践成果,同时也展望了未来的工作方向。 首先,针对Flink任务启动优化,文档强调了快速启动Flink作业的重要性。快手通过一系列措施减少了作业启动时间,这包括但不限于改进连接器的配置,实现双机房读写功能,以提高容错性和可用性。同时,他们还设计了策略来允许Sink在一定程度的数据丢失下仍能正常运行,并提供一键丢弃历史lag的机制,以便在故障发生时快速恢复。 其次,Flink稳定性持续优化是另一个关键领域。快手对Flink与Kafka的集成进行了高可用性改造。在Flink Kafka Connector层面,实现了双机房读写,使得在单个机房故障时,系统仍能保持运行。Flink任务的故障恢复机制也得到了强化,能够快速检测到宕机故障并加速恢复过程。此外,他们还引入了Flink Kafka Cluster Source,它支持读取双集群topic,能够自动应对单集群故障并自动恢复,显著提升了系统的健壮性。 接着,文档深入讨论了Flink SQL的实践与优化。Flink SQL为业务提供了便捷的SQL接口,但同时也带来了优化挑战。快手通过优化SQL执行逻辑,提升了查询效率,降低了资源消耗。例如,他们通过逻辑内控制拆流,实现了双集群Kafka Topic的写入,尽管这种方法灵活性较低,但在特定场景下能有效提升系统的可用性。 最后,未来工作部分提及了快手将继续在Flink平台的性能提升、功能增强和新特性的探索上投入,以满足不断增长的实时数据处理需求。 快手的Apache Flink优化实践提供了宝贵的实战经验和洞见,对于其他企业来说,这些经验可以作为参考,帮助他们在构建实时数据处理系统时避免常见问题,提升系统性能和稳定性。

2023-07-13 09:15:56,872 WARN org.apache.flink.runtime.dispatcher.DispatcherRestEndpoint [] - Unhandled exception java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[?:1.8.0_372] at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) ~[?:1.8.0_372] at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[?:1.8.0_372] at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[?:1.8.0_372] at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) ~[?:1.8.0_372] at org.apache.flink.shaded.netty4.io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:253) ~[flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) ~[flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [flink-dist-1.15.3.jar:1.15.3] at org.apache.flink.shaded.netty4.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [flink-dist-1.15.3.jar:1.15.3] at java.lang.Thread.run(Thread.java:750) [?:1.8.0_372]

2023-07-14 上传