目前整个过程的核心是flink
批处理选择用pyflink
流处理选择用java+flink
当然之所以这么选择,是跟我的技术栈有关。因为本人之前一直从事离线数仓的工作,批处理一直选择的脚本语言包括python,perl,甚至是kettle脚本。遇到实时数据处理,通常是springboot下面的 消息订阅机制(activemq,rabbitmq,kafka)来处理。虽然也能应付实时的要求,但是数据量上来后明显感觉力不从心。另外维护两套引擎,维护工作实在是麻烦。直接看到flink的出现,感觉etl流批可以一体化了。
架构:

ODS:操作数据层,保存原始数据,对非结构化的数据进行结构化处理,轻度清洗,几乎不删除原始数据。
该层的数据主要来自业务数据库的 binlog 日志、埋点日志和应用程序日志。
对于 binlog 日志直接通过flink sdc 上报到Kafka 中。
除了存储在 Kafka 中,同时也会对业务数据库的 binlog 日志通过 Flink 写入 HDFS、Kudu 等存储引擎。
另外,对于埋点日志和应用程序日志,需要计算实时PV,UV的通过flume读入到kafka, 需要测算运营订单转化率,模块使用率,点击率等功能优化的,则通过flume落地到hdfs。
DWD:实时明细数据层,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表;可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,也即宽
本文介绍了采用Flink构建的流批一体数据仓库架构,涉及ODS、DWD、DIM和DM层的数据处理流程。利用Flink进行实时ETL,结合Hadoop、Hive、Kafka、Kudu和Clickhouse等组件,实现数据的实时处理、存储和分析。同时,介绍了如何根据业务需求选择不同存储引擎,满足各种时效性和查询性能要求。
订阅专栏 解锁全文

808

被折叠的 条评论
为什么被折叠?



