大数据项目之在线教育离线数仓

大数据开发项目之在线教育离线数仓从零到一(学习项目)

本文详细介绍了大数据开发项目之在线教育离线数仓的开发过程,从零到一,包括项目背景、需求分析、设计思路、技术选型、开发环境搭建、数据采集、数仓搭建、

项目整体流程

该项目是一个在线教育大数据开发项目,旨在构建离线数仓,对在线教育业务数据进行分析处理,以支持企业决策。以下是项目的详细流程:

1. 业务流程与数据来源

  • 业务流程:用户从在线教育网站首页开始浏览课程,可通过分类查询或全文检索寻找课程,找到后可添加到购物车、登录、结算,生成订单和支付数据,订单生成后会进行跟踪处理。
  • 数据来源:包括用户行为数据(通过前端埋点采集,存储在 HDFS 文件中)和业务数据(存储在 MySQL 中)。(因为本项目为学习项目,所以数据来源均为数据模拟器模拟的虚拟数据)

2. 系统数据流程设计

  • 集群流程图:业务服务器与 App 业务交互,通过 Nginx 进行数据传输。日志数据经日志服务器采集,可采用 flume 采集方式,部分数据经消息缓存后存入 Kafka。业务数据通过 DataX 每日同步从 MySQL 数据库导入。数据在集群中经过 ODS、DWD、DWS 等层的处理,最终用于可视化。
    流程图
    问:为什么不直接使用flume把数据采集到hdfs,要在之间加一个kafka呢?可以把Kafka换为flume聚合吗?
  • 集群特点:具备多数据源对接能力,可进行离线批量和在线实时处理,有统一的集群管理配置监控平台,并实现用户认证和权限管理,满足多租户需求。

3. 技术选型

  • Apache 框架版本:确定了 Hadoop、Flume、Kafka、Hive、Sqoop 等多种技术框架的具体版本,每个版本都有其特定的功能特点,以满足项目需求。

    框架 版本
    Hadoop 3.1.3
    Zookeeper 3.5.7
    MySQL 5.7.16
    Hive 3.1.2
    Flume 1.9.0
    Kafka 3.0.0
    Spark 3.0.0
    DataX 3.0.0
    Superset 1.3.2
    DolphinScheduler 2.0.3
    Maxwell 1.29.2
  • 服务器选型:因为本项目仅为学习项目所以服务器选型比较简单仅为三台虚拟机。

4. 集群规模规划

  • 集群规划:详细规划了各服务器节点上部署的组件,如 DataNode、NodeManager、ResourceManager 等在不同服务器上的分布。

    服务名称 子服务 hadoop102 hadoop103 hadoop104
    HDFS NameNode
    HDFS DataNode
    HDFS SecondaryNameNode
    Yarn NodeManager
    Yarn Resourcemanager
    Zookeeper Zookeeper Server
    Flume(采集日志) Flume
    Kafka Kafka
    Flume(消费Kafka日志) Flume
    Flume(消费Kafka业务) Flume
    Hive Hive
    MySQL MySQL
    DataX DataX
    Maxwell Maxwell
    Spark
    DolphinScheduler ApiApplicationServer
    DolphinScheduler AlertServer
    DolphinScheduler MasterServer
    DolphinScheduler WorkerServer
    DolphinScheduler LoggerServer

5. 数据仓库学习重点

  1. 建模(建表)
  2. SQL及优化
  3. 任务调度器

如果直接将MySQL作为数据仓库数据源

  1. MySQL为行存储,数仓为列存储
  2. MySQL不是海量数据,数据仓库要求海量数据(因为数据量越大,分析结果越准确)
  3. 会降低MySQL的查询性能
  4. 所以数仓设计自己的数据源要求汇总数据
  5. 加hdfs(因为数仓采用hive)为解耦合,数据源和数仓分离,数据源只负责采集数据,数仓只负责分析数据