littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于Flink的实时数仓系统

项目简介

本项目是基于Apache Flink构建的实时数仓系统,可处理和分析实时数据流,具备高效的数据复用性与灵活的指标生成能力。能支持多种实时数据分析需求,例如灵活选择TopN区间段、一次实时数据生成多个指标等。

项目的主要特性和功能

数据类型

  • 数据库数据:包含登录、订单、用户、商品、支付等业务交互数据,存储于MySQL。
  • 日志数据:涵盖页面埋点日志和启动日志,通过Nginx和Kafka收集处理。

数据分层与职能

  • ODS层:原始数据层,通过FlinkCDC和日志服务器采集日志与业务数据。
  • DWD层:数据明细层,进行数据分流和去重,生成UV、跳出行为、订单宽表、支付款表等。
  • DIM层:维度数据层,存储用户、商品、地区等维度数据。
  • DWS层:服务数据层,按维度主题轻度聚合多个事实数据,形成主题宽表。
  • ADS层:应用数据层,对ClickHouse数据筛选聚合用于可视化展示。

关键功能模块

  • BaseLogApp:处理页面日志数据,分流去重,生成启动、页面和曝光日志。
  • BaseDBApp:处理业务数据,动态分流,将维度数据存于HBase,事实数据写回Kafka。
  • UV计算:计算日活用户(DAU),通过状态编程校验新老用户。
  • 跳出明细计算:用Flink CEP进行模式匹配计算用户跳出行为。
  • 订单宽表:关联用户、地区等维度数据生成订单宽表。
  • 支付宽表:关联支付表信息与订单宽表生成支付宽表。

安装使用步骤

环境准备

  1. 安装Java 8或更高版本。
  2. 下载安装Apache Flink并配置集群。
  3. 下载安装Apache Kafka并配置集群。
  4. 下载安装MySQL数据库。
  5. 下载安装HBase并配置集群。
  6. 下载安装ClickHouse数据库。

项目部署

  1. 配置文件:依据实际环境配置application.properties文件,设置数据库连接、Kafka主题等参数。
  2. 编译项目:使用Maven编译,命令为mvn clean install
  3. 启动Flink任务:将编译后的JAR文件提交到Flink集群,命令为flink run -c com.ogleede.gmalllogger.realtime.app.dwd.BaseLogApp target/realtime-data-warehouse-1.0.jar
  4. 启动Kafka消费者:监听相关主题,命令为kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ods_base_log
  5. 启动Nginx:启动服务器并配置日志收集,命令为sudo systemctl start nginx

数据处理流程

  1. 数据采集:通过FlinkCDC和日志服务器采集MySQL和日志数据,写入Kafka的ODS层。
  2. 数据分流:在DWD层分流数据,生成启动、页面和曝光日志,写入Kafka的DWD层。
  3. 维度关联:在DWD层关联维度数据,将维度数据存于HBase,事实数据写回Kafka。
  4. 数据聚合:在DWS层聚合数据,生成主题宽表,写入ClickHouse。
  5. 数据展示:在ADS层筛选聚合数据用于可视化展示。

监控与维护

  1. Flink监控:使用Flink的Web UI监控任务运行状态、查看日志和指标。
  2. Kafka监控:使用Kafka监控工具查看主题消费情况和延迟。
  3. 数据库监控:使用数据库监控工具查看数据写入和查询情况。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】