微信 Flink on Kubernetes 实战,带来大数据分析新模式
2023-09-08 19:35:24
引言
随着大数据技术的飞速发展,大数据分析平台已经成为企业进行数据分析和决策的重要工具。传统的大数据分析平台通常采用 Hadoop 生态圈的组件进行搭建,这些组件大多是分布式系统,需要复杂的运维和管理。近年来,云原生技术逐渐兴起,云原生大数据平台也应运而生。云原生大数据平台具有敏捷、弹性、可扩展等优点,可以帮助企业快速构建和管理大数据分析平台。
微信 Flink on Kubernetes 实践
微信内部的大数据计算平台是基于自研的 Yard 资源调度系统来建设,Yard 的设计初衷除了提供在线服务资源隔离外,另一方面是为了提高在线服务机器的整体资源利用率,其核心策略是在机器空闲时能在上面跑一些大数据离线任务。但是对接业界各种大数据计算框架(例如 Hadoop MapReduce、Hive、Spark)都比较费力,这些计算框架一般都不支持 Kubernetes 原生的方式来运行。
Flink 作为一款批流统一的计算引擎,天然支持云原生部署方式,因此我们选择了 Flink 作为微信内部大数据云原生化的第一个实践。
Flink on Kubernetes 架构
Flink on Kubernetes 架构如下图所示:
- Flink JobManager: Flink 作业管理器,负责管理 Flink 作业的执行。
- Flink TaskManager: Flink 任务管理器,负责执行 Flink 作业的任务。
- Kubernetes: Kubernetes 是一个开源的容器编排系统,负责管理 Flink 作业的容器。
Flink on Kubernetes 最佳实践
我们在微信内部 Flink on Kubernetes 的实践中总结了一些最佳实践,供大家参考:
- 使用 Flink on Kubernetes Operator: Flink on Kubernetes Operator 是一个用于在 Kubernetes 上部署和管理 Flink 作业的工具,可以帮助用户快速构建和管理 Flink on Kubernetes 集群。
- 选择合适的 Flink 镜像: Flink 提供了多种镜像,用户可以根据自己的需求选择合适的镜像。
- 配置合理的资源: Flink 作业需要足够的资源才能正常运行,用户需要根据 Flink 作业的负载情况配置合理的资源。
- 监控 Flink 作业: Flink 提供了丰富的监控指标,用户可以借助这些指标来监控 Flink 作业的运行状态。
- 使用 Flink 的故障恢复机制: Flink 提供了完善的故障恢复机制,可以帮助用户在 Flink 作业发生故障时快速恢复。
大数据云原生化在微信内部的应用
微信内部的大数据云原生化实践取得了良好的效果,主要体现在以下几个方面:
- 提升了资源利用率: 云原生大数据平台可以充分利用 Kubernetes 的资源调度能力,提高资源利用率。
- 降低了运维成本: 云原生大数据平台可以减少运维人员的工作量,降低运维成本。
- 提高了敏捷性和弹性: 云原生大数据平台可以快速构建和管理,具有很强的敏捷性和弹性。
Flink on Kubernetes Operator 框架
为了降低大数据云原生的使用门槛,助力企业快速构建大数据云原生平台,我们抽象出了 Flink on Kubernetes Operator 框架。Flink on Kubernetes Operator 框架提供了一套标准的接口,使大数据计算框架能够轻松地与 Kubernetes 集成。
Flink on Kubernetes Operator 框架具有以下优点:
- 开箱即用: 用户只需简单配置即可使用 Flink on Kubernetes Operator 框架,无需编写额外的代码。
- 降低学习成本: Flink on Kubernetes Operator 框架提供了统一的接口,使大数据计算框架的云原生部署变得更加容易。
- 提高开发效率: Flink on Kubernetes Operator 框架可以帮助开发者快速构建和管理大数据云原生平台。
结语
大数据云原生化是云计算发展的大势所趋,微信内部的大数据云原生化实践取得了良好的效果。Flink on Kubernetes Operator 框架为大数据云原生化提供了有力的支撑,使大数据计算框架能够轻松地与 Kubernetes 集成。相信随着云原生技术的不断发展,大数据云原生化将成为越来越多企业的选择。