Talkingdata--T112019-数据智能技术峰会-Flink在数据分析中的应用_24页_3mb
报告摘要
Flink 在 TalkingData 数据分析中的应用总结
核心内容
Flink 是 TalkingData 在其 SaaS 分析系统中用于流处理的重要工具,随着业务需求的增长,TalkingData 逐步从传统的 Jetty 服务和自研 ETL 框架转向使用 Flink 来满足更高性能和更复杂业务场景的需求。本文档总结了 Flink 在 TalkingData 中的应用背景、演进路线、实践中的重点问题及解决方案,以及未来展望。
主要观点
-
流处理背景与痛点:
- 早期的 Jetty 服务和自研 ETL 框架存在扩展性差、性能不足、容错机制不完善等问题。
- 随着业务量增长,需要更高效的流处理系统来应对高吞吐和低延迟的需求。
-
Flink 技术选型优势:
- 支持 exactly-once 和 at-least-once 的语义,确保数据处理的准确性。
- 提供更丰富的功能,如 SQL 支持、自主内存管理等。
- 适用于多种场景,包括流处理、批处理和混合处理。
-
Flink 在 TalkingData 中的演进路线:
- 从 standalone cluster 到 Flink on Yarn 的迁移,提升了资源管理能力和多租户支持。
- 通过优化资源分配和隔离策略,解决了 Job 阻塞、资源竞争等问题。
- 支持多队列管理,包括流式队列、批处理队列和混合队列,以满足不同业务需求。
-
实践中的重点问题与解决方案:
- Job 阻塞与网络栈优化:
- 通过将 operator chain 在一起,减少网络传输和序列化反序列化开销。
- 使用 Flink 1.5 及以上版本,提升系统稳定性。
- 资源平衡与隔离:
- 将 TaskManager 粒度变小,部署多个实例,提升资源利用率。
- 将大业务 job 隔离到不同集群,减少相互干扰。
- 使用 Flink on Yarn 实现更灵活的资源调度。
- 序列化与反序列化优化:
- 使用 POJOs 和 TypeInformation 提升序列化性能。
- 显式调用
returns()方法触发 Flink 的类型提示,优化序列化过程。 - 注册自定义类型,提升序列化效率。
- Job 阻塞与网络栈优化:
关键信息
Flink 在 TalkingData 中的应用数据
| 时间段 | 日均数据量 | 峰值 package/s | 峰值 events/s | 集群规模(核) |
|---|---|---|---|---|
| 2017.4~2017.6 | 42亿 | 6.5万 | 40万 | 120核 |
| 2018.1~2018.12 | 46亿 | 6.5万 | 40万 | 288核 |
| 2019.7 | 63亿 | 9.5万 | 80万 | 432核 |
Flink 技术特性对比(2016年)
| 特性 | Flink | Heron |
|---|---|---|
| 性能 | 优于 Storm,基于流 | 优于 Storm,基于流 |
| 语义 | exactly-once / at-least-once | at-least-once |
| 自主内存管理 | 是 | 否 |
| Operator 支持 | 较丰富 | 较丰富 |
| SQL 支持 | 是 | 否 |
| Batch 支持 | Batch 是 Stream 的特例 | 否 |
| 监控 | 不完善 | 较完善 |
| 使用者 | 阿里、华为 |
未来展望
- 进一步优化:持续优化 Flink 在 TalkingData 中的性能表现,特别是在高并发、大规模数据处理场景下。
- 扩展应用:探索将更多复杂业务迁移到 Flink 上,甚至支持 Batch Job 的处理。
- 提升稳定性:通过改进资源管理和监控机制,进一步提升系统的稳定性和可维护性。
总结
Flink 在 TalkingData 的 SaaS 分析系统中发挥了重要作用,帮助其应对日益增长的数据处理需求。通过不断演进和优化,Flink 不仅解决了早期系统存在的扩展性、性能和容错问题,还提升了资源管理能力和多租户支持。未来,TalkingData 计划进一步深化 Flink 在其系统中的应用,探索更广泛的功能扩展,以实现更高效的数据处理和分析能力。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载