StreamPark 项目构建指南
一、环境准备
1.1 环境要求
- JDK: 1.8+
- Maven: 3.6+
- Node.js: 14+
1.2 环境验证命令
# 验证 Java 版本
java -version
# 验证 Maven 版本
mvn -version
# 验证 Node.js 版本
node -v
二、获取源码
cd ~/IdeaProjects
git clone https://github.com/apache/incubator-streampark.git
cd incubator-streampark
三、构建过程
3.1 初始构建尝试
mvn clean install -DskipTests
3.2 遇到的问题
- Maven 依赖下载速度慢
- 原因:默认使用 Maven 中央仓库,国外源访问速度慢
- 解决方案:配置国内镜像源
- 实施步骤:
- 备份原有配置:
mv ~/.m2/settings.xml ~/.m2/settings.xml.bak - 创建新的 Maven 配置文件
- 备份原有配置:
3.3 Maven 配置优化
在 ~/.m2/settings.xml 中配置多个国内镜像源:
<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!-- 华为云仓库 -->
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
<!-- 腾讯云仓库 -->
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
</mirrors>
3.4 优化后的构建命令
mvn clean install -DskipTests
四、构建加速技巧
-
跳过测试(-DskipTests)
- 原因:测试执行需要额外时间,开发阶段可以跳过
- 注意:正式环境部署前应执行完整测试
-
配置多个镜像源
- 原因:单一镜像源可能存在不稳定或速度慢的情况
- 好处:Maven 会自动选择响应最快的镜像源
-
使用 Maven 并行构建(可选)
mvn clean install -DskipTests -T 1C-T 1C表示每个 CPU 核心运行一个线程- 适用于多模块项目的并行构建
五、项目结构说明
StreamPark 项目主要包含以下模块:
streampark-console:Web 控制台streampark-flink:Flink 相关组件streampark-spark:Spark 相关组件streampark-common:公共工具类streampark-shaded:项目依赖管理
六、部署运行
6.1 构建发行版
mvn clean package -Pscala-2.12,webapp,dist -DskipTests
命令解释:
mvn clean:清理之前的构建产物package:打包但不安装到本地仓库-P:指定构建 profilescala-2.12:使用 Scala 2.12 版本webapp:构建 Web 控制台dist:生成发行版压缩包
-DskipTests:跳过测试以加快构建
构建过程分析:
- 首先清理旧的构建文件
- 编译并打包 Java/Scala 代码
- 构建前端 Web 控制台
- 最后打包成发行版压缩包
6.2 解压发行版
cd streampark-console/streampark-console-service/target
tar -zxf apache-streampark_2.12-2.1.2-incubating-bin.tar.gz
cd apache-streampark_2.12-2.1.2-incubating-bin
命令解释:
cd target:进入构建产物目录tar -zxf:解压 gzip 压缩的 tar 包-z:通过 gzip 过滤-x:解压-f:指定文件
6.3 修改配置
- 编辑
conf/application.yml,修改工作空间目录:
workspace:
local: ~/streampark_workspace
remote: ~/streampark_workspace
配置说明:
local:本地工作空间,用于存储项目文件remote:远程工作空间,这里为了简化也使用本地路径
- 创建工作空间目录:
mkdir -p ~/streampark_workspace
命令解释:
mkdir:创建目录-p:如果父目录不存在则创建
6.4 启动服务
./bin/startup.sh
启动过程分析:
- 脚本首先检查环境变量(JAVA_HOME 等)
- 设置必要的 Java 运行参数
- 加载配置文件
- 启动 Spring Boot 应用
- 将进程 ID 写入 PID 文件
6.5 访问控制台
- URL: http://localhost:10000
- 用户名: admin
- 密码: streampark
验证步骤:
- 确认服务启动成功:检查日志文件
logs/streampark.out - 验证端口可访问:
curl -I http://localhost:10000 - 使用浏览器访问并登录
6.6 停止服务
./bin/streampark.sh stop
停止过程分析:
- 读取 PID 文件获取进程 ID
- 发送停止信号给进程
- 等待进程完全退出
- 清理 PID 文件
七、问题排查思路
7.1 构建问题排查
-
依赖下载失败
- 检查 Maven 配置:
cat ~/.m2/settings.xml - 验证网络连接:
ping maven.aliyun.com - 查看详细日志:
mvn -X clean package - 手动下载依赖:访问 Maven 仓库网站
- 检查 Maven 配置:
-
编译错误
- 检查 Java 版本:
java -version - 查看编译日志:找到具体报错位置
- 清理缓存:
mvn clean - 更新 IDE 索引(如果使用 IDE)
- 检查 Java 版本:
7.2 运行问题排查
-
服务启动失败
- 检查端口占用:
lsof -i :10000 - 查看启动日志:
tail -f logs/streampark.out - 验证配置文件:
cat conf/application.yml ls -l ~/streampark_workspace - 检查 Java 进程:
jps -ml
- 检查端口占用:
-
无法访问控制台
- 检查服务状态:
./bin/streampark.sh status - 测试端口连通性:
telnet localhost 10000 - 查看系统日志:
tail -f logs/streampark.out tail -f logs/error.log
- 检查服务状态:
-
数据库连接问题
- 验证 H2 数据库文件权限
- 检查数据库配置项
- 查看数据库连接日志
7.3 调试技巧
-
开启调试模式
./bin/streampark.sh debug -
查看完整日志
tail -f logs/streampark.out | grep -i error tail -f logs/streampark.out | grep -i warn -
检查系统资源
# 查看内存使用 free -h # 查看磁盘空间 df -h # 查看 CPU 使用 top -n 1 -
JVM 问题排查
- 使用 jstat 查看 GC 状态
- 使用 jmap 导出堆内存
- 使用 jstack 查看线程状态
这些排查步骤和命令可以帮助你快速定位和解决问题。记住要先收集足够的信息,再进行有针对性的排查。