大数据综合实训项目:设备运行状态监控与风险预测可视化大屏
企业场景故事线:智慧农业园区设备监控项目
一、项目背景故事
新疆某智慧农业示范园区,占地 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 数据格式
第五章:Flink 实时计算与指标统计
1. Flink 实时计算内容
- 实时在线设备数量(10秒)
- 实时告警数量(10秒)
- 实时温度趋势(滑动窗口)
- 告警 Top5 统计(1分钟窗口)
2. 实时计算结果去向表(MySQL rt 库四表)
- 写入 MySQL
rt库 rt_kpi_online_10srt_kpi_alarm_10srt_temp_trend_10srt_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 端口访问