项目简介
本项目是基于Apache Flink构建的实时数仓系统,可处理和分析实时数据流,具备高效的数据复用性与灵活的指标生成能力。能支持多种实时数据分析需求,例如灵活选择TopN区间段、一次实时数据生成多个指标等。
项目的主要特性和功能
数据类型
- 数据库数据:包含登录、订单、用户、商品、支付等业务交互数据,存储于MySQL。
- 日志数据:涵盖页面埋点日志和启动日志,通过Nginx和Kafka收集处理。
数据分层与职能
- ODS层:原始数据层,通过FlinkCDC和日志服务器采集日志与业务数据。
- DWD层:数据明细层,进行数据分流和去重,生成UV、跳出行为、订单宽表、支付款表等。
- DIM层:维度数据层,存储用户、商品、地区等维度数据。
- DWS层:服务数据层,按维度主题轻度聚合多个事实数据,形成主题宽表。
- ADS层:应用数据层,对ClickHouse数据筛选聚合用于可视化展示。
关键功能模块
- BaseLogApp:处理页面日志数据,分流去重,生成启动、页面和曝光日志。
- BaseDBApp:处理业务数据,动态分流,将维度数据存于HBase,事实数据写回Kafka。
- UV计算:计算日活用户(DAU),通过状态编程校验新老用户。
- 跳出明细计算:用Flink CEP进行模式匹配计算用户跳出行为。
- 订单宽表:关联用户、地区等维度数据生成订单宽表。
- 支付宽表:关联支付表信息与订单宽表生成支付宽表。
安装使用步骤
环境准备
- 安装Java 8或更高版本。
- 下载安装Apache Flink并配置集群。
- 下载安装Apache Kafka并配置集群。
- 下载安装MySQL数据库。
- 下载安装HBase并配置集群。
- 下载安装ClickHouse数据库。
项目部署
- 配置文件:依据实际环境配置
application.properties
文件,设置数据库连接、Kafka主题等参数。 - 编译项目:使用Maven编译,命令为
mvn clean install
。 - 启动Flink任务:将编译后的JAR文件提交到Flink集群,命令为
flink run -c com.ogleede.gmalllogger.realtime.app.dwd.BaseLogApp target/realtime-data-warehouse-1.0.jar
。 - 启动Kafka消费者:监听相关主题,命令为
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ods_base_log
。 - 启动Nginx:启动服务器并配置日志收集,命令为
sudo systemctl start nginx
。
数据处理流程
- 数据采集:通过FlinkCDC和日志服务器采集MySQL和日志数据,写入Kafka的ODS层。
- 数据分流:在DWD层分流数据,生成启动、页面和曝光日志,写入Kafka的DWD层。
- 维度关联:在DWD层关联维度数据,将维度数据存于HBase,事实数据写回Kafka。
- 数据聚合:在DWS层聚合数据,生成主题宽表,写入ClickHouse。
- 数据展示:在ADS层筛选聚合数据用于可视化展示。
监控与维护
- Flink监控:使用Flink的Web UI监控任务运行状态、查看日志和指标。
- Kafka监控:使用Kafka监控工具查看主题消费情况和延迟。
- 数据库监控:使用数据库监控工具查看数据写入和查询情况。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】