T112019-数据智能技术峰会-Flink在数据分析中的应用24页_3mb
报告摘要
Flink 在 TalkingData SaaS 分析中的应用总结
核心内容
Flink 是一种用于流处理和批处理的开源框架,因其强大的实时计算能力和灵活的架构设计,被 TalkingData 选为流处理系统的核心工具。TalkingData 在其 SaaS 分析平台中经历了从自研系统到 Flink 的演进过程,逐步解决了早期流处理系统在扩展性、性能和容错机制上的不足。
主要观点
- 流处理服务演进:TalkingData 流处理服务经历了多个阶段,从早期的 Jetty 服务和自研 ETL 框架,逐步迁移到基于 Flink 的流处理系统,以满足更大的业务量和更复杂的业务场景。
- Flink 的优势:Flink 相比其他流处理框架(如 Storm)具有更高的性能,支持 exactly-once 和 at-least-once 的语义,提供自主内存管理和 SQL 支持,适用于多种业务场景。
- 资源管理与隔离:在使用 Standalone 集群时,资源分配不均导致 Job 之间相互干扰。通过 Flink on Yarn 实现多租户分发和资源隔离,优化了资源利用效率。
- 网络栈与序列化优化:Job 阻塞问题多由 Buffer 不足引起,优化网络栈和序列化方式可有效提升性能。Flink 提供了多种序列化方式,包括 Kryo、Avro 和 Pojo,可根据需求进行选择和定制。
关键信息
1. TalkingData 流处理的背景与痛点
- Jetty 服务:存在不易扩展与维护、性能问题。
- 自研 ETL 框架:无法完整表达 DAG,容错机制不足,性能问题依然存在。
- 新的流处理系统:需支持更大业务量和更复杂业务场景。
2. Flink 在 TalkingData SaaS 分析中的演进路线
- Standalone Cluster:初期部署单集群,随着业务增长,资源分配不均和 Job 干扰问题显现,最终拆分为多个集群。
- Flink on Yarn:通过 Yarn 实现多租户分发和调度,支持流式和批处理队列,优化资源利用和隔离。
演进时间线
| 时间 | 部署方式 | 日均数据量 | 峰值 package/s | 峰值 events/s | 集群规模 |
|---|---|---|---|---|---|
| 2017.4~2017.6 | Standalone | 42亿 | 6.5w | 40w | 288核 |
| 2018.1~2018.12 | Standalone | 46亿 | 6.5w | 40w | 288核 |
| 2019.7 | Flink on Yarn | 63亿 | 9.5w | 80w | 432核 |
3. 实践经验
3.1 Job 阻塞与网络栈优化
- 问题:Job 阻塞导致吞吐量急剧下降。
- 解决方案:
- 尽可能将 Operator 链式组合,减少网络传输和序列化反序列化开销。
- 使用 Flink 1.5 及以上版本以获得更好的性能。
3.2 资源的 Balance 与 Isolation
- 问题:Standalone 集群中资源分配不均,Job 之间相互干扰。
- 解决方案:
- 将 TaskManager 的粒度变小,即一台机器部署多个实例。
- 将大业务 Job 隔离到不同集群。
- 使用 Flink on Yarn 实现资源隔离和多租户分发。
- Container 拆解粒度不宜过小,建议 2core 4g 的配置。
3.3 序列化与反序列化
- 问题:序列化成为 CPU 抽样的热点,影响性能。
- 解决方案:
- 使用泛化的 JsonNode 和 Pojos,根据需求选择合适的序列化方式。
- 通过
TypeInformation内部封装的序列化器,提升性能。 - 显示调用
returns()方法触发 Flink 的类型提示,优化序列化效率。 - 注册子类和字段类型,提升 Flink 对类型信息的识别能力。
- 自定义序列化器以满足特定需求。
4. 总结与展望
- 当前状态:Flink 已经稳定支持 TalkingData 分析线,日均处理 63 亿条数据,峰值处理 9.5 万条 package/s 和 80 万条 events/s。
- 未来展望:可以进一步探索将更复杂的业务迁移到 Flink 上,甚至支持批处理任务,以提升整体数据处理能力。
关键技术点
- 网络栈优化:通过减少网络传输和序列化反序列化开销,提升 Job 性能。
- 资源隔离:使用 Flink on Yarn 实现资源隔离和多租户分发,优化资源利用。
- 序列化策略:根据业务需求选择合适的序列化方式,提升处理效率和性能。
总结
Flink 在 TalkingData SaaS 分析中的应用,显著提升了流处理系统的性能和可扩展性。通过不断优化网络栈、资源管理和序列化策略,TalkingData 实现了高效的数据处理能力,支持了更大的业务量和更复杂的业务场景。未来,随着技术的进一步发展,Flink 在 TalkingData 中的应用将更加广泛和深入。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载