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)

  1. 下载 jdk-8u202-linux-x64.tar.gz 并解压至 /usr/local/jdk1.8.0_202。
  2. 配置环境变量 JAVA_HOME 与 PATH。
  3. 验证安装: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 插件兼容性最佳。

安装步骤

  1. 下载 apache-maven-3.6.3-bin.tar.gz 并解压至 /usr/local/maven。
  2. 配置 M2_HOME 与 PATH。
  3. 验证: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 配置。
Flink Standalone 集群架构(开发环境) JobManager RPC Port: 6123 TaskManager 1 Slot: 2 | Memory: 2048m TaskManager 2 Slot: 2 | Memory: 2048m Web UI: http://localhost:8081 | 总 Slot = 4 | 默认并行度 = 2 开发环境推荐 1 台物理机部署所有角色,便于调试

3.4 IDE 配置(IntelliJ IDEA)

推荐使用 IntelliJ IDEA Community / Ultimate 2022+,安装以下插件以提升 Flink 开发效率:

插件名称 用途
Scala(若使用 Scala API) Scala 语言支持、语法高亮
Maven Helper 依赖冲突分析、模块视图
Save Actions 自动格式化、优化导入
Flink(非官方社区版) Flink 作业模板、运行配置

项目导入与 JDK 关联

  1. File → New → Project from Existing Sources → 选择 Maven 项目。
  2. File → Project Structure → Project SDK → 选择 JDK 1.8。
  3. 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
开发环境组件关系与数据流 IntelliJ IDEA 编写 / 调试 / 打包 Maven 依赖管理 / 构建 Flink Standalone JM + 2×TM JDK 1.8 (JAVA_HOME) 所有组件的运行时基础

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 项目并编写坏账率回测哨兵作业。