SmartNews 基于 Flink 的 Iceberg 实时数据湖实践

SmartNews在Flink引领的数据湖革命中探索实时更新的冰山之路


SmartNews的数据湖架构师戚清雨在Flink Forward Asia 2022大会上分享了他们构建的高效数据湖实践,这一创新性策略分为五个关键环节:数据湖构建、Iceberg v1的挑战与解决方案、实时更新优化、Iceberg v2的革命性突破,以及未来展望。


数据湖基石


SmartNews的数据湖不仅存储广告事件和维表信息,还通过Kafka实时写入,同时以MySQL或Hive的形式存储实时和按小时划分的数据,作为ETL和实时报表的门户。


技术挑战与应对


在实时处理中,他们面临去重、精确时间戳更新和近实时查询的挑战。SmartNews采用Spark处理广告事件,存储在S3并分区,通过Airflow管理任务流程,确保任务的高效执行。


从Iceberg v1到v2的飞跃


起初,使用Iceberg v1虽然解决了部分问题,但资源利用不均和锁竞争问题日益显现。SmartNews随后转向Flink+Iceberg v2,实现了真正的实时更新,大幅降低资源消耗,引入Merge On Read机制,仅处理1%的数据更新。


实时更新与维表同步


MySQL的CDC流式解决方案被用来实时更新维表,兼顾查询速度和准确性。广告事件和维表数据流式化后,通过Flink直接写入Iceberg,同时利用MySQL CDC将变化同步到Flink,提供广播式的State供下游查询。


优化与效率提升


Spark支持的是小时级时效性,而Flink则达到了分钟级,显著提高了ETL的处理效率。通过Upsert模式和Flink State,他们有效解决了小文件问题,减少写入数据量,优化了查询性能。


冰山Sink的秘密


Iceberg Flink Sink的写入策略中,Writer根据Partition决定文件大小,而Partition数据湖则按小时物理分区,每个Partition对应一个文件。Writer和Committer协同工作,确保Checkpoint时的更新被正确提交。


通过动态Shuffle Operator,SmartNews巧妙地避免了小文件过多的问题,通过KeySelectors的选择策略,如Equality Field KeySelector和PartitionKeySelector,确保数据分布的均衡。


未来展望与实战推荐


通过定期的Checkpoint,SmartNews优化了文件数量的分布,尤其是使用Dynamic Shuffle KeySelector后,文件生成模式更稳定,小文件减少明显。在阿里云实时计算Flink版的0元试用活动中,了解更多关于高效实时处理的实战技巧。


深入探索SmartNews的实践,发现数据湖的无限可能,点击这里开启你的实时计算之旅。



扩展阅读:苹果手机safari下载入口 ... smart news 不能看了 ... smartnewsapp ... 安卓手机safari下载入口 ... safari网站入口 ... safari浏览器在线入口 ... smartnews download ... mx master ... smart audio 老是弹出 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网