李翔-大数据技术

Big data technology!

第01章 项目背景与需求分析


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


企业场景故事线:智慧农业园区设备监控项目


一、项目背景故事

新疆某智慧农业示范园区,占地 300 亩,园区内部署了 50 台智能农业设备,用于:

  • 🌡 温室温度监测
  • 💧 土壤湿度采集
  • ⚡ 设备电压与负载监控
  • 🌬 通风系统运行控制

这些设备 24 小时运行,每分钟向系统上报一次运行数据。


二、问题出现

最近一个月,园区管理人员发现:

  • 多次出现 高温报警
  • 个别设备突然掉线
  • 作物产量出现波动
  • 设备维修次数明显增加

但是问题在于:

  • 报警信息分散在日志里
  • 没有统一监控平台
  • 无法实时查看整体运行状态
  • 更无法提前判断哪台设备“即将出问题”

三、企业需求

园区负责人召开会议,提出三点要求:

1️⃣ 随时掌握设备运行状态
2️⃣ 异常第一时间发现
3️⃣ 提前预测潜在风险

于是,一个“智慧农业设备监控与风险预测系统”项目正式启动。


四、本项目要解决什么需求

本综合实训项目围绕企业三类核心问题展开:


① 实时监控 — 现在怎么样?

  • 当前在线设备数量
  • 当前告警数量
  • 实时温度变化趋势
  • 告警最多的设备

解决问题:

让管理人员“第一时间看到问题”。


② 历史分析 — 过去发生了什么?

  • 近 7 天温度趋势
  • 哪几天故障最多
  • 哪台设备长期运行异常

解决问题:

用数据分析问题发生的规律。


③ 风险预测 — 未来可能发生什么?

  • 哪些设备属于高风险
  • 哪些设备可能出现故障
  • 风险等级分布情况

解决问题:

实现从“被动维修”到“主动预防”的转变。


五、系统建设思路

技术团队决定采用大数据技术进行改造:

  • 使用 Kafka 接收设备实时数据
  • 使用 Flink 进行实时计算写入Mysql
  • 使用 Hive 存储历史明细数据
  • 使用 Spark 进行离线统计分析
  • 使用 RandomForest 构建设备风险预测模型
  • 使用 ClickHouse 存储分析与预测结果
  • 使用 Spring Boot + Vue3 构建可视化大屏系统

六、三类企业问题对应三条技术主线

企业需求 技术主线
现在是否异常? 实时主线
过去运行如何? 离线主线
未来是否有风险? 预测主线

七、项目整体定位

本综合实训项目以

“智慧设备运行预测大屏(前后端分离系统)”

为最终业务成果,构建一套融合:

  • 实时数据采集
  • 实时计算处理
  • 离线统计分析
  • 机器学习风险预测
  • 前后端分离可视化展示
  • 企业部署上线流程

的完整大数据应用体系。

项目技术组合:

Kafka + Flink + Hive + Spark + ClickHouse + RandomForest + Spring Boot + Vue3

项目技术链路:

“数据从产生 → 实时计算 → 离线分析 → 风险预测 → API封装 → 前端展示 → 部署上线”

八、项目最终交付成果

本项目最终将完成:

一个可真实运行、可部署上线的
智慧设备运行预测可视化大屏系统

通过本项目训练,学生将掌握:

  • 大数据系统整体架构理解能力
  • 实时与离线计算分工能力
  • 分析型数据库应用能力
  • 前后端分离系统开发能力
  • 企业部署流程认知能力

九、总体技术架构

1️⃣ 实时计算链路

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

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

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

十、章节框架


前言

  • 综合实训项目目标与能力培养定位
  • 企业级“实时 + 离线 + 预测 + 可视化”架构介绍
  • 前后端分离系统在企业中的应用场景
  • 本项目最终成果说明:智慧设备运行预测大屏系统

第一章:项目背景与业务需求分析

1. 项目背景

  • 工业设备运行数据持续产生
  • 运维部门对实时监控与风险预警要求提高
  • 企业普遍采用大屏系统进行集中展示
  • 预测能力成为运维决策的重要支撑

2. 业务需求分析

围绕“智慧设备运行预测大屏”提出:

  • 实时设备在线监控
  • 实时温度趋势展示
  • 告警统计与排行
  • 历史7天趋势对比分析
  • 设备风险预测与高危识别
  • 前后端分离部署上线

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

1. 技术选型说明

技术 角色定位
Kafka 实时数据采集与传输
Flink 实时流式计算
Hive 离线明细数据仓库
Spark 离线统计分析
ClickHouse 分析型数据库(历史 + 预测结果)
RandomForest 风险预测模型
MySQL 实时计算结果存储
Spring Boot 后端 REST API
Vue3 + ECharts 大屏可视化展示
Nginx 前端部署与反向代理

2. 系统架构设计说明

(1)实时链路

  • Kafka:接收设备实时数据流
  • Flink:进行实时窗口计算(10秒 / 1分钟)
  • MySQL(rt库):存储实时指标结果
  • Spring Boot:提供统一 REST API
  • Vue3 + ECharts:渲染大屏实时模块

(2)离线与预测链路

  • Hive:保存历史明细数据
  • Spark:进行日级统计分析
  • ClickHouse:存储历史统计结果
  • RandomForest:生成风险预测结果
  • ClickHouse:保存预测明细数据
  • Spring Boot:对外提供预测接口

第三章:数据结构设计与数据仓库建模(Hive)

1. Hive 核心表设计

  • iot.ods_device_status_di(ODS 明细分区表,ORC,按 dt 分区,含 ts 字段)
  • ods_device_status_csv_tmp(历史CSV临时表,TEXTFILE,用于演示动态分区入湖)

可选扩展:在 ODS 基础上再讲 DWD/DWS 的“思想”,不强制落表。

2. 数据仓库层次说明

  • ODS:原始明细(本项目必做)
  • DWS:统计汇总(Spark/ML特征依赖)
  • DWD:清洗明细(可选拓展)

为 Spark 离线分析与机器学习特征工程提供基础数据。


第四章:Kafka 实时数据采集

1. Kafka Topic 设计

  • device_status_topic

2. 数据采集方式

  • 模拟设备程序定时产生数据
  • 实时数据写入 Kafka
  • 统一 JSON 数据格式

  • 实时在线设备数量(10秒)
  • 实时告警数量(10秒)
  • 实时温度趋势(滑动窗口)
  • 告警 Top5 统计(1分钟窗口)

2. 实时计算结果去向表(MySQL rt 库四表)

  • 写入 MySQL rt
  • rt_kpi_online_10s
  • rt_kpi_alarm_10s
  • rt_temp_trend_10s
  • rt_alarm_top5_1m
  • 为 Spring Boot API 提供实时查询数据源

第六章:Spark 离线分析处理

1. 离线任务(与教程一致)

  • 入湖任务(Structured Streaming):Kafka → Hive ODS(ods_device_status_di),10s触发 + checkpoint
  • 历史趋势任务(Batch):按 dt 聚合 AVG/MAX temperature

2. 结果落地(ClickHouse 报表库)

  • iot_report.dws_temp_trend_day(dt / avg_temp / max_temp)

3. 本章验收点

  • ClickHouse 表能回读验证(select order by dt desc limit 7)
  • 大屏历史柱状图能用该表字段直接映射

第七章:机器学习风险预测模型

1. 输入与输出

  • 输入:Hive/ClickHouse 的历史统计特征(按设备/按天)
  • 输出:ClickHouse 预测明细表
    • iot_report.dws_device_pred_detail(device_id, prob1, risk_level, batch_time)

2. 本章验收点

  • 风险环形图能按 risk_level 或 prob1 分段统计
  • TopRisk 能按 prob1 desc 取前 N

第八章:前后端分离大屏系统设计

本章节为整个实训项目最终落地成果。


1. 后端设计(Spring Boot)

  • 提供 REST API(8080)
  • 查询 MySQL 实时数据
  • 查询 ClickHouse 历史与预测数据
  • 统一返回格式:
{ "code":200, "msg":"ok", "data":{} }

2. 前端设计(Vue3 + ECharts)

  • 三栏布局大屏结构
  • 六图可视化模块
  • Axios 调用后端接口
  • Vite 代理解决跨域问题

3. 六图模块与数据对应关系

区域 模块 数据来源
左上 KPI关键指标 MySQL + ClickHouse
左下 风险等级占比(环形图) ClickHouse
中上 实时温度趋势(双折线) MySQL
中下 近7天历史趋势(柱状图) ClickHouse
右上 在线率仪表盘 MySQL
右下 告警Top3 + 高风险Top3 MySQL + ClickHouse

5. 接口清单

  • /api/kpi/summary(MySQL + ClickHouse:在线/告警/平均温度/高危数)
  • /api/kpi/tempTrend(MySQL:实时温度趋势)
  • /api/kpi/alarmTop(MySQL:告警Top3)
  • /api/history/temp7d(ClickHouse:dws_temp_trend_day)
  • /api/predict/riskPie(ClickHouse:dws_device_pred_detail)
  • /api/predict/topRisk(ClickHouse:TopRisk)
  • /api/kpi/onlineRate(MySQL:在线率)

6. 部署阶段

  • 开发阶段:5173 + 8080
  • 上线阶段:Nginx 托管 dist
  • 反向代理 /api → 8080
  • 对外统一 80 端口访问

发表评论:

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

Powered By Z-BlogPHP 1.7.3

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