这是一个具备高可扩展性与高性能的大数据系统,整体架构分为数据接入层、数据存储层、数据处理层、服务层以及前端展示层。系统旨在解决海量数据的采集、存储、处理和可视化分析等问题,为企业提供全方位的大数据解决方案。
- 高性能:采用分布式架构,支持水平扩展,能够处理PB级数据
- 高可用:关键组件均支持集群部署,消除单点故障
- 实时性:支持数据实时采集、处理和分析,满足业务实时决策需求
- 易扩展:模块化设计,便于功能扩展和定制化开发
- 安全可靠:提供完善的数据安全保障机制
flowchart TD
subgraph 分层架构
A[数据接入层] -->|实时/批量数据| B[数据存储层]
B -->|原始/结构化/索引数据| C[数据处理层]
C -->|分析/计算结果| D[服务层]
D -->|API服务| E[前端展示层]
end
A -->|Kafka/Flume/Logstash| B
B -->|HDFS/HBase/Elasticsearch| C
C -->|Spark Core/SQL/Streaming| D
D -->|Spring Boot/Cloud微服务| E
E -->|Vue+ElementPlus+ECharts| 终端用户
系统采用分层架构设计,各层通过标准化接口实现松耦合协作,核心交互流程如下:
- 数据接入层通过Kafka/Flume/Logstash等组件,将实时流数据(如业务日志)或批量数据(如CSV文件)清洗转换后,以结构化/半结构化格式传递至数据存储层
- 数据存储层根据数据类型选择HDFS(原始大文件)、HBase(高频读写结构化数据)或Elasticsearch(全文检索数据)存储,并通过统一元数据接口向处理层暴露访问能力
- 数据处理层基于Spark Core/SQL/Streaming引擎,从存储层拉取数据完成批处理(T+1报表)、流处理(实时告警)或机器学习(用户画像),结果输出至服务层
- 服务层通过Spring Boot/Cloud微服务封装分析结果,提供RESTful API供前端调用,并集成服务治理(注册发现/熔断限流)保障高可用
- 前端展示层通过Vue+ElementPlus构建交互界面,调用服务层API获取数据,使用ECharts实现动态图表可视化,最终呈现给终端用户
- 功能:负责从多样化的数据源收集数据,支持全量数据导入和增量数据实时同步
- 组件:Kafka、Flume、Logstash、自定义数据采集器
- 特点:支持批量导入、实时采集、数据清洗和转换
- 功能:采用分布式文件系统HDFS、HBase和Elasticsearch存储不同类型的数据
- 组件:
- HDFS:存储原始数据和大文件
- HBase:存储结构化和半结构化数据
- Elasticsearch:存储需要全文检索的数据
- MySQL:存储元数据和业务数据
- MongoDB:存储文档型数据
- 功能:基于Apache Spark构建数据处理引擎,支持批处理和流处理
- 组件:
- Spark Core:分布式数据处理
- Spark SQL:结构化数据处理
- Spark Streaming:实时数据处理
- Spark MLlib:机器学习算法库
- 功能:基于Spring Boot和Spring Cloud构建微服务架构
- 组件:
- 服务注册与发现:Eureka/Nacos
- 服务网关:Spring Cloud Gateway
- 负载均衡:Ribbon
- 服务熔断:Hystrix/Sentinel
- 配置中心:Spring Cloud Config/Nacos
- 功能:采用Vue.js构建用户界面,实时展示处理后的数据
- 组件:
- Vue 3:前端框架
- ElementPlus:UI组件库
- Echarts:数据可视化
- Axios:HTTP客户端
- 框架:Vue 3.3.4 + Vue Router 4.2.4 + Vuex 4.1.0
- UI库:ElementPlus 2.3.12组件库
- 可视化:Echarts 5.4.3数据可视化
- HTTP客户端:Axios 1.5.0
- 构建工具:Vite 4.4.9
- CSS预处理器:Sass 1.66.1
- 状态管理:Vuex 4.1.0
- 响应式设计:适配多种设备屏幕
- 基础框架:Java 8 + Spring Boot 2.7.0 + Spring Cloud 2021.0.3
- API设计:RESTful API
- ORM框架:MyBatis + MyBatis-Plus 3.5.2
- 数据库:
- 关系型:MySQL 8.0.29
- NoSQL:MongoDB 4.6.1
- 列式存储:HBase 2.4.11
- 搜索引擎:Elasticsearch 7.17.3
- 消息队列:Kafka 3.1.0
- 大数据处理:
- 分布式计算:Spark 3.2.1
- 分布式存储:Hadoop 3.3.2
- 用户注册、登录、权限管理
- 基于RBAC的权限控制
- 支持OAuth2.0第三方登录
- JWT令牌认证
- 数据上传、下载、删除和修改
- 数据源管理和配置
- 数据质量监控
- 数据血缘追踪
- 数据筛选、排序、分组和聚合
- 自定义分析模型
- 支持SQL查询和可视化查询构建器
- 分析结果导出(Excel、PDF等)
- 系统运行状态和数据变化监控
- 自定义监控指标和告警规则
- 监控大屏展示
- 异常事件推送
- 数据传输加密、敏感数据加密存储
- 数据访问控制和审计
- 数据脱敏和水印
- 数据备份和恢复
- JDK 1.8+(推荐使用Oracle JDK 1.8.0_291)
- Node.js 14+(推荐使用Node.js 14.18.0或更高版本)
- MySQL 8.0+(推荐使用MySQL 8.0.29)
- Maven 3.6+(推荐使用Maven 3.6.3或更高版本)
- Docker & Docker Compose(可选,用于容器化部署)
- Hadoop 3.3.2
- Spark 3.2.1
- HBase 2.4.11
- Elasticsearch 7.17.3
- MongoDB 4.6.1
- Kafka 3.1.0
- 创建MySQL数据库
# 登录MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE bigdata_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 授权(根据实际情况调整用户名和密码)
GRANT ALL PRIVILEGES ON bigdata_db.* TO 'root'@'localhost' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
- 导入初始数据(可选)
# 导入SQL脚本(如果有)
mysql -u root -p bigdata_db < /path/to/init.sql
# 克隆项目
git clone https://gitee.com/wengxiulin/bigdataai.git
# 进入后端目录
cd bigdataai/backend
# 编译打包
mvn clean package -DskipTests
在src/main/resources/application.yml
或application-dev.yml
中配置数据库连接:
spring:
datasource:
url: jdbc:mysql://localhost:13306/bigdata_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
# 开发环境启动
java -jar target/bigdata-ai-backend-1.0.0.jar --spring.profiles.active=dev
# 生产环境启动(增加JVM参数)
java -Xms512m -Xmx1024m -jar target/bigdata-ai-backend-1.0.0.jar --spring.profiles.active=prod
- 从Node.js官网下载并安装Node.js 14+
- 验证安装
node -v # 应显示v14.x.x或更高版本
npm -v # 应显示6.x.x或更高版本
# 设置淘宝镜像
npm config set registry https://registry.npmmirror.com
# 进入前端目录
cd bigdataai/frontend
# 安装依赖
npm install
# 开发模式运行(热重载)
npm run dev
- 开发服务器默认运行在 http://localhost:5173
- 修改API接口地址:在
src/api/config.js
或相关配置文件中设置后端API地址
// 示例配置
const API_BASE_URL = process.env.NODE_ENV === 'production'
? 'http://production-api.example.com'
: 'http://localhost:8080';
export default API_BASE_URL;
# 构建生产环境版本
npm run build
# 预览生产构建
npm run preview
# 部署到Web服务器
# 将dist目录下的文件复制到Web服务器的静态资源目录
- 安装Docker:按照Docker官方文档安装
- 安装Docker Compose:按照Docker Compose官方文档安装
- 在项目根目录创建或修改
docker-compose.yml
文件(如果不存在)
version: '3'
services:
mysql:
image: mysql:8.0
container_name: bigdata-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: bigdata_db
ports:
- "13306:3306"
volumes:
- mysql-data:/var/lib/mysql
backend:
build: ./backend
container_name: bigdata-backend
restart: always
depends_on:
- mysql
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bigdata_db?useSSL=false&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
frontend:
build: ./frontend
container_name: bigdata-frontend
restart: always
ports:
- "80:80"
depends_on:
- backend
volumes:
mysql-data:
- 启动服务
# 在项目根目录执行
docker-compose up -d
# 查看容器状态
docker-compose ps
# 查看日志
docker-compose logs -f
- 停止服务
# 停止并移除容器
docker-compose down
# 停止并移除容器及卷(会删除数据)
docker-compose down -v
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature
) - 提交您的更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开一个 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 项目维护者:您的名字
- 邮箱:your.email@example.com
- 项目链接:https://github.com/yourusername/bigdataai