3、开发环境搭建:JDK、Maven、Flink集群(Standalone模式)、IDE配置
本章将搭建一套完整的 Flink 实时流处理开发环境,涵盖 JDK、Maven、Flink Standalone 集群以及 IDE 的配置。环境版本选择遵循生产级稳定性原则,确保后续回测坏账率哨兵作业能够顺利编译、部署与运行。
版本对齐建议:本教程统一使用 JDK 1.8(8u202)、Maven 3.6.3、Flink 1.14.6(Scala 2.12)。若使用更高版本,请自行验证 API 兼容性。
3.1 JDK 安装与配置
Flink 1.14.x 依赖 JDK 1.8 或 11。推荐使用 JDK 8u202(Oracle 或 OpenJDK 均可),该版本是 Flink 社区长期验证的稳定基线。
安装步骤(Linux / macOS)
- 下载 jdk-8u202-linux-x64.tar.gz 并解压至
/usr/local/jdk1.8.0_202。 - 配置环境变量
JAVA_HOME与PATH。 - 验证安装:
java -version应输出1.8.0_202。
# 解压
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/
# 配置环境变量(~/.bashrc 或 /etc/profile)
export JAVA_HOME=/usr/local/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
# 生效并验证
source ~/.bashrc
java -version
Windows 配置要点
- 解压后设置系统变量
JAVA_HOME指向解压路径。 - 在
Path中添加%JAVA_HOME%\bin。 - 命令行执行
java -version确认。
避坑:Flink 对 JDK 版本敏感。不要使用 JDK 9/10/12 等非 LTS 版本,否则可能遇到 Unsafe 或模块化兼容问题。
3.2 Maven 安装与配置
Maven 用于管理项目依赖与构建生命周期。本教程使用 Maven 3.6.3,该版本与 Flink 1.14 的 shade 插件兼容性最佳。
安装步骤
- 下载 apache-maven-3.6.3-bin.tar.gz 并解压至
/usr/local/maven。 - 配置
M2_HOME与PATH。 - 验证:
mvn -version显示 Maven 3.6.3 及 JDK 1.8。
# 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/
mv /usr/local/apache-maven-3.6.3 /usr/local/maven
# 配置环境变量
export M2_HOME=/usr/local/maven
export PATH=$M2_HOME/bin:$PATH
# 验证
mvn -version
settings.xml 优化
在 ~/.m2/settings.xml 中配置阿里云镜像仓库,加速依赖下载:
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
3.3 Flink Standalone 集群搭建
Standalone 模式是 Flink 最轻量的部署方式,适合开发与测试。集群包含 1 个 Master(JobManager) 和 2 个 Worker(TaskManager)。
下载与解压
wget https://archive.apache.org/dist/flink/flink-1.14.6/flink-1.14.6-bin-scala_2.12.tgz
tar -zxvf flink-1.14.6-bin-scala_2.12.tgz -C /usr/local/
mv /usr/local/flink-1.14.6 /usr/local/flink
集群配置
编辑 /usr/local/flink/conf/flink-conf.yaml:
| 配置项 | 值 | 说明 |
|---|---|---|
jobmanager.rpc.address |
localhost | JobManager 主机地址 |
jobmanager.rpc.port |
6123 | RPC 通信端口 |
jobmanager.memory.process.size |
1600m | JobManager 堆内存 |
taskmanager.memory.process.size |
2048m | 每个 TaskManager 堆内存 |
taskmanager.numberOfTaskSlots |
2 | 每个 TaskManager 的 Slot 数 |
parallelism.default |
2 | 默认并行度 |
编辑 /usr/local/flink/conf/workers,添加 Worker 节点地址:
localhost
localhost
启动与验证
# 启动集群
/usr/local/flink/bin/start-cluster.sh
# 查看进程
jps
# 应看到:StandaloneSessionClusterEntrypoint(JobManager)
# TaskManagerRunner(TaskManager × 2)
# 访问 Web UI
# http://localhost:8081
Web UI 关键指标:Task Managers 数量显示为 2,Slots 总数 4(2 × 2),Available Slots 4。若数值不符,检查 workers 文件与 flink-conf.yaml 的 slot 配置。
3.4 IDE 配置(IntelliJ IDEA)
推荐使用 IntelliJ IDEA Community / Ultimate 2022+,安装以下插件以提升 Flink 开发效率:
| 插件名称 | 用途 |
|---|---|
| Scala(若使用 Scala API) | Scala 语言支持、语法高亮 |
| Maven Helper | 依赖冲突分析、模块视图 |
| Save Actions | 自动格式化、优化导入 |
| Flink(非官方社区版) | Flink 作业模板、运行配置 |
项目导入与 JDK 关联
- File → New → Project from Existing Sources → 选择 Maven 项目。
- File → Project Structure → Project SDK → 选择 JDK 1.8。
- File → Settings → Build, Execution, Deployment → Build Tools → Maven → 设置 Maven home path 为
/usr/local/maven。
Flink 运行配置模板
在 IDEA 中创建 Application 运行配置,用于本地调试 Flink 作业:
Main class: com.example.badrate.BadRateSentinelJob
Program arguments: --input kafka://localhost:9092/loan_events --output file:///tmp/badrate_result
VM options: -Dlog4j.configurationFile=file:///path/to/log4j2.xml
Working directory: $MODULE_DIR$
Use classpath of module: badrate-sentinel
本地调试建议:在 IDE 中直接运行 Flink 作业时,默认会启动一个 MiniCluster(Embedded JobManager + TaskManager),无需依赖外部集群。适合单元测试与逻辑验证。
3.5 环境验证清单
完成上述配置后,执行以下命令进行全链路验证:
# 1. JDK 验证
java -version
# 输出:java version "1.8.0_202"
# 2. Maven 验证
mvn -version
# 输出:Apache Maven 3.6.3
# 3. Flink 集群验证
/usr/local/flink/bin/start-cluster.sh
curl http://localhost:8081
# 返回 200 OK,页面显示集群概览
# 4. 提交测试作业
/usr/local/flink/bin/flink run /usr/local/flink/examples/streaming/SocketWindowWordCount.jar --port 9000
# 输出:Job has been submitted with JobID xxxxx
3.6 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
java.lang.UnsupportedClassVersionError |
JDK 版本不匹配(编译版本 > 运行版本) | 统一使用 JDK 1.8,检查 JAVA_HOME 指向 |
| Web UI 无法访问 | JobManager 未启动或端口被占用 | 执行 jps 确认进程;netstat -anp | grep 8081 检查端口 |
| TaskManager 注册失败 | workers 文件配置错误或网络不通 | 检查 workers 文件每行一个地址;关闭防火墙测试 |
| Maven 依赖下载慢 | 未配置国内镜像 | 在 settings.xml 中添加阿里云镜像 |
| IDEA 无法识别 Flink API | Maven 未刷新或依赖未导入 | 点击 Maven 面板的 Reload All Projects |
环境就绪标志:当 Flink Web UI 显示 2 个 TaskManager、4 个 Slot,且能成功提交 SocketWindowWordCount 示例作业时,开发环境搭建完成。下一阶段将创建 Maven 项目并编写坏账率回测哨兵作业。