李翔-大数据技术

Big data technology!

第02章 技术选型与系统架构设计


大数据综合实训项目:设备运行状态监控与风险预测可视化大屏



第二章:技术选型与系统架构设计


一、章节定位说明

  • 所属课程:大数据综合实训
  • 章节性质:项目认知深化章(技术理解 + 架构认知)
  • 本章关键词

“业务需求 → 技术选型 → 系统架构”

📌 教学说明

  • 本章 仍然不写具体代码
  • 重点解决三个问题:
    1. 这些技术各自是干什么的
    2. 为什么不能只用一种技术
    3. 企业系统为什么要“分层、分工”

二、教学目标

1. 知识目标

学生能够:

  • 了解 Kafka、Flink、Hive、Spark、ClickHouse、Redis、Mysql、ML 在企业中的典型角色
  • 理解实时计算与离线分析在技术选型上的差异
  • 说清楚一套大数据系统中各组件的分工关系

2. 能力目标

学生能够:

  • 根据业务需求,选择合适的技术组件
  • 从整体角度理解一个大数据系统的运行流程
  • 为后续实验中的“为什么要这样做”提供理论依据

3. 素养目标

  • 建立“技术服务业务”的工程思维
  • 理解企业系统设计中稳定性、扩展性、性能的重要性

三、教学重点与难点

教学重点

  • 技术选型的角色分工
  • 实时技术与离线技术的区别
  • 系统整体架构的逻辑关系

教学难点

  • 把 Kafka、Flink、Spark 混为一谈
  • 误以为“技术越多越高级”
  • 不理解为什么要多种存储并存

四、技术选型说明(核心教学内容)

1. 为什么要进行技术选型?

企业系统不是“能跑就行”,而是要:

  • 跑得稳
  • 跑得快
  • 能扩展
  • 好维护

所以企业会把不同任务交给最合适的技术


2. 本项目技术选型与角色分工

技术 中文名称 在项目中的角色(通俗说法)
Kafka 消息队列 / 消息中间件 数据的“传送带”,负责把数据送进系统
Flink 实时计算引擎 实时计算的“流水线工人”
Hive 数据仓库 存历史明细数据的“仓库”
Spark 离线计算引擎 做历史统计分析的“统计分析员”
MySQL 关系型数据库 实时结果存储的“业务数据库”
ClickHouse 分析型数据库 专门给大屏查历史报表的“高速查询库”
Redis 内存缓存数据库 实时数据的“加速缓存”
ML(RandomForest) 机器学习模型 用历史数据“预测未来风险”
Vue + ECharts 前端可视化框架 把数据“画出来”的展示层

五、系统架构设计说明(重点)

1. 系统整体思路

1️⃣ 实时计算链路

设备数据模拟程序
        ↓
      Kafka(实时数据采集)
        ↓
      Flink(实时窗口计算)
        ↓
      MySQL(rt 实时结果表)
        ↓
   Spring Boot(REST API,8080)
        ↓
   Vue3 + ECharts(大屏展示)
        ↓
      Nginx(80端口部署上线)

2️⃣ 离线分析与预测链路

Hive(明细层数据仓库)
        ↓
      Spark(离线统计计算)
        ↓
   ClickHouse(分析型数据库)
        ↓
  RandomForest(风险预测模型)
        ↓
 ClickHouse(预测结果表)
        ↓
 Spring Boot API
        ↓
 大屏展示(风险占比 + 高风险Top)

核心流程可以总结为:

数据产生 → 数据传输 → 数据计算 → 数据存储 → 数据展示 → 风险预测


2. 各技术在架构中的位置与作用

(1)Kafka:实时数据采集入口

  • 负责接收设备实时数据
  • 解耦数据产生与数据处理
  • 保证数据不会丢失

👉 类比:快递中转站


  • 对 Kafka 中的数据进行实时计算
  • 统计实时指标(在线数、告警数、趋势等)
  • 计算结果可写入 Redis / ClickHouse

👉 类比:边生产边统计


(3)Hive:离线数据仓库

  • 存储完整、长期的历史数据
  • 作为离线分析和机器学习的数据来源
  • 不追求查询速度,追求数据完整性

👉 类比:历史档案室


(4)Spark:离线分析计算

  • 对 Hive 中的数据进行批量分析
  • 计算日、周、月统计结果
  • 分析结果写入 ClickHouse

👉 类比:定期做总结报表


(5)ClickHouse:分析型数据库

  • 专门用于大屏查询
  • 查询快、适合统计分析
  • 不做事务,只做分析

👉 类比:查询速度极快的分析仓库


(6)MySQL:实时结果存储层

  • 存储 Flink 实时计算结果(rt 库)
  • 存放在线数、告警数、实时趋势等指标
  • 供 Spring Boot API 查询

👉 类比:实时数据展示数据库


(7)机器学习(ML):风险预测模块

  • 基于历史数据进行建模
  • 输出设备风险概率
  • 预测结果供大屏展示

👉 强调:本项目用模型结果,不研究算法推导


六、系统架构运行流程

设备 → Kafka → Flink → MySQL → 大屏(实时)

设备 → Kafka → Hive → Spark → ClickHouse → 大屏(历史)

Hive → ML → ClickHouse → 大屏(预测)

流程:

  1. 设备运行数据持续上报,首先进入 Kafka 消息队列,作为系统的数据入口和缓冲层
  2. Flink 从 Kafka 实时读取数据,计算在线数量、告警数量、温度趋势等核心指标
  3. 实时计算结果写入 MySQL 数据库,供后端接口查询和大屏实时展示
  4. 原始明细数据同步进入 Hive 数据仓库,进行长期存储
  5. Spark 从 Hive 读取历史数据,进行日统计、趋势分析等离线计算
  6. 离线分析结果写入 ClickHouse 分析型数据库,用于快速报表查询
  7. ML 模型基于 Hive 历史数据进行训练与预测,生成设备风险等级结果,并写入 ClickHouse
  8. 前端大屏统一调用 MySQL(实时数据)和 ClickHouse(历史与预测数据),完成可视化展示

七、本章小结

通过本章学习,我们明确了:

  • 企业系统不是“一个程序解决所有问题”
  • 不同技术各司其职、相互配合
  • 技术选型的核心标准是:是否适合业务场景
  • 后续实验中,每一步操作都有明确的“位置和意义”

八、承接下一章

下一章我们将进入 数据层设计
重点解决一个问题:

“数据到底长什么样?表怎么设计?数据怎么存?”


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

版权:李翔
备案/许可证编号为:新ICP备2024006115号-1