返回

Flink 迁移之路:从 Standalone 到 On Yarn,性能提升五倍

见解分享

引言

在数据驱动时代,流式数据处理已成为企业实时洞察、快速响应和业务决策的关键。Apache Flink 作为领先的流式数据处理框架,凭借其低延迟、高吞吐量和容错性,受到广泛欢迎。对于 TalkingData 而言,Flink 已成为我们流式数据处理的重要支柱。

Standalone 之痛

在 2017 年上半年,我们的 App Analytics 和 Game Analytics 产品仍然使用自研的 td-etl-framework。虽然该框架降低了开发流式任务的复杂度,但同时也存在着一些痛点:

  • 性能瓶颈: 随着数据量的不断增长,td-etl-framework 的性能逐渐成为瓶颈,难以满足业务快速增长的需求。
  • 运维困难: Standalone 部署模式运维复杂,故障恢复耗时,影响业务稳定性。
  • 扩展受限: Standalone 部署难以实现水平扩展,阻碍了处理能力的提升。

拥抱 Flink

为了解决这些问题,我们决定拥抱 Flink。Flink 的分布式流处理架构和丰富的 API 为我们提供了高效、稳定和可扩展的解决方案。

迁移之路

Flink 迁移之路并非一蹴而就。我们从最简单的 standalone 模式入手,逐步过渡到 on Yarn 模式,最终实现了性能的五倍提升。

Standalone 模式

最初,我们部署 Flink 采用 standalone 模式。在此模式下,Flink 的 JobManager 和 TaskManager 部署在单台机器上。这种模式简单易用,但受限于单机性能,无法满足我们日益增长的数据处理需求。

On Yarn 模式

为了突破性能瓶颈,我们探索了 on Yarn 模式。在该模式下,Flink 的 JobManager 和 TaskManager 分别部署在 Yarn 的 ResourceManager 和 NodeManager 上。Yarn 负责资源管理和调度,Flink 专注于数据处理。

on Yarn 模式具有以下优势:

  • 资源弹性: Yarn 可以根据 Flink 的资源需求动态分配和释放资源,实现弹性伸缩。
  • 高可用性: Yarn 提供了高可用性支持,确保 Flink 集群在 JobManager 或 TaskManager 故障时能够自动恢复。
  • 集群管理: Yarn 提供了统一的集群管理界面,简化了 Flink 的运维工作。

性能提升

通过迁移到 on Yarn 模式,Flink 的性能得到了显著提升。在相同的硬件条件下,Flink 的处理能力提升了五倍,满足了我们业务快速增长的需求。

优化实践

除了迁移到 on Yarn 模式之外,我们还进行了以下优化实践:

  • 作业拆分: 将大型作业拆分为多个小作业,提升并发度,提高处理效率。
  • 状态管理: 合理使用 Flink 的状态管理机制,优化内存和存储的使用。
  • SQL 优化: 使用 Flink SQL API 进行流式处理,提升代码简洁性和可维护性。
  • 性能监控: 通过 Flink Web UI、Prometheus 等工具进行性能监控,及时发现和解决性能问题。

经验总结

两年 Flink 迁移之路,我们积累了一些宝贵的经验:

  • 循序渐进: Flink 迁移是一个循序渐进的过程,不可急于求成。
  • 实践优化: 除了迁移之外,持续的优化实践至关重要。
  • 团队协作: Flink 迁移需要各团队之间的紧密协作,包括研发、运维和业务团队。
  • 持续学习: Flink 技术发展迅速,需要持续学习和探索新功能。

展望未来

随着 Flink 生态的不断完善,我们将继续探索 Flink 的更多特性,如流批一体、事件时间处理和机器学习集成等,进一步提升我们的数据处理能力,为业务发展提供强有力的技术支撑。

关于 TalkingData

TalkingData 是全球领先的数据智能云服务商,为企业提供全栈式数据智能解决方案,赋能企业数字化转型。

**