《Apache Flink 案例集(2022版)》——4.云原生——京东-Flink on K8s 在京东的持续优化实践(下)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 《Apache Flink 案例集(2022版)》——4.云原生——京东-Flink on K8s 在京东的持续优化实践(下)

《Apache Flink 案例集(2022版)》——4.云原生——京东-Flink on K8s 在京东的持续优化实践(上) https://developer.aliyun.com/article/1228060



接下来是磁盘的性能问题。容器中的存储空间由两部分组成,如上图所示,底层是只读的镜像层,顶部是可读写的容器层。容器运行的时候涉及到文件的写操作都是在容器层中完成的,这里需要一个存储驱动提供联合文件系统来管理。  


存储驱动一般来说为空间效率进行了优化,额外的抽象会带来一定的性能损耗 (取决于具体存储驱动),写入速度要低于本地文件系统,特别是使用了写时复制的存储驱动来说,损耗更大。这对于写密集型的应用来说,会有更大的性能影响。而在 Flink 中,很多地方都涉及到本地磁盘的读写,比如日志输出、RocksDB 读写、批任务 shuffle 等。那么该如何处理来减小影响?  


一是可以考虑使用外挂的 Volume,使用本地存储卷,直接写数据到 主机文件系统来提升性能;


此外也可以调优磁盘 IO 相关参数,比如调优 RocksDB 参数,提升磁盘的访问性能;


最后也可以考虑采用一些存储计算分离的方案,比如使用 Remote Shuffle,提升本地Shuffle的性能和稳定性。


image.png

在实践过程中经常会发现,很多业务的计算任务配置不合理,占用了过多的资源造成了资源浪费。此外,流量存在波峰波谷,如何在洪峰时自动扩容,在波谷时自动缩容,在减少人工干预、保证业务稳定的同时提高资源利用率,这都涉及到资源弹性伸缩的问题。为此京东开发了弹性伸缩的服务,根据作业运行情况动态调整任务的并行度以及 Taskmanager 的规格,来解决作业吞吐不足、资源浪费等问题。  


通过弹性伸缩服务,可以较好地解决一些场景的资源浪费问题,以及任务吞吐与算子并行度呈线性关系条件下的性能问题。不过它还是存在一定的局限性,比如对于外部的系统瓶颈、数据倾斜以及任务本身的性能瓶颈还有无法通过扩并行度提升的场景,不能很好地应对解决。  


此外结合弹性伸缩,京东进行了一些实时流任务和离线批任务错峰混部的尝试。如上图右所示,在凌晨前后,流任务比较空闲,会缩容释放出一些资源给批任务;之后可以使用这些释放的资源在夜间运行批任务;到了白天批任务运行完释放的资源又可以还给流任务,用于扩容以应对流量洪峰,从而提高资源的整体利用率。


image.png

相比物理机或 YARN 环境,Flink on K8s 出现问题以后的排查相对要更困难,因为这里面还涉及到 K8s 许多组件,比如容器网络、DNS 解析、K8s 调度等各方面的问题,都存在一定的门槛。  


为了解决这个问题,京东开发了智能诊断的服务,将作业相关的各个维度的监控指标 (包括物理机的、容器的、集群的和任务的指标) 与任务拓扑结合起来并与 K8s 打通,结合Pod日志和任务日志联合进行分析,并将日常人工运维的一些方法进行归纳总结应用到分析策略中,诊断出作业的问题并给出优化建议。目前支持对任务重启、任务背压、Checkpoint失败、集群资源利用率低等一些常见问题进行诊断。


用户收益

全部 on K8s 后收益还是比较明显的:  


首先混合部署服务和资源共享能力获得了提升,节省机器资源 30%;


其次,具有更好的资源隔离和弹性自愈能力,比较容易实现根据业务的负载进行资源的弹性伸缩,保证了业务的稳定性;


最后开发、测试、生产一致性的环境,避免环境给整个开发过程带来问题,同时极大提升了部署和运营自动化的能力,降低了管理运维的成本。


未来规划

未来京东会在以下几方面继续探索:  


1. 调度优化:


一方面是 K8s 层面资源调度优化,更高效地管理大数据的在线服务和离线作业,提升 K8s 集群的利用率和运行效率;


另一方面是 Flink 作业调度优化,支持更丰富、更细粒度的调度策略,提升 Flink 作业资源的利用率和稳定性,满足不同的业务场景需要。  


2. 服务混部:将不同负载的服务混部在一起,在保证服务稳定的前提下尽量提升资源利用率,使服务器的价值最大化;  

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
打赏
0
0
0
0
81
分享
相关文章
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
514 33
The Past, Present and Future of Apache Flink
Apache Flink 2.0.0: 实时数据处理的新纪元
Apache Flink 2.0.0 正式发布!这是自 Flink 1.0 发布九年以来的首次重大更新,凝聚了社区两年的努力。此版本引入分离式状态管理、物化表、流批统一等创新功能,优化云原生环境下的资源利用与性能表现,并强化了对人工智能工作流的支持。同时,Flink 2.0 对 API 和配置进行了全面清理,移除了过时组件,为未来的发展奠定了坚实基础。感谢 165 位贡献者的辛勤付出,共同推动实时计算进入新纪元!
306 1
Apache Flink 2.0.0: 实时数据处理的新纪元
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
优化 Apache 日志记录的 5 个最佳实践
|
7月前
|
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1281 13
Apache Flink 2.0-preview released
优化Apache Kafka性能:最佳实践与调优策略
【10月更文挑战第24天】作为一名已经对Apache Kafka有所了解并有实际使用经验的开发者,我深知在大数据处理和实时数据流传输中,Kafka的重要性不言而喻。然而,在面对日益增长的数据量和业务需求时,如何保证系统的高性能和稳定性成为了摆在我们面前的一个挑战。本文将从我的个人视角出发,分享一些关于如何通过合理的配置和调优来提高Kafka性能的经验和建议。
170 4
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
234 3
您有一份 Apache Flink 社区年度报告请查收~
您有一份 Apache Flink 社区年度报告请查收~
Apache Flink 2.0:Streaming into the Future
本文整理自阿里云智能高级技术专家宋辛童、资深技术专家梅源和高级技术专家李麟在 Flink Forward Asia 2024 主会场的分享。三位专家详细介绍了 Flink 2.0 的四大技术方向:Streaming、Stream-Batch Unification、Streaming Lakehouse 和 AI。主要内容包括 Flink 2.0 的存算分离云原生化、流批一体的 Materialized Table、Flink 与 Paimon 的深度集成,以及 Flink 在 AI 领域的应用。
902 13
Apache Flink 2.0:Streaming into the Future
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####

相关产品

  • 实时计算 Flink版