一、环境要求
确认你的环境
- Java: 11
- Scala: 2.12
- Spark: 3.5.0
推荐 Flink 版本
- Flink 1.17.2 (完全兼容上述环境)
二、安装 Flink
1. 下载 Flink
使用 aria2 多线程下载(推荐):
# 进入安装目录
cd /opt/bigdata
# 使用清华镜像下载
sudo aria2c -x 16 https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz
或使用 curl:
sudo curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz
国内其他镜像源:
- 华为云:
https://repo.huaweicloud.com/apache/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz - 阿里云:
https://mirrors.aliyun.com/apache/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz
2. 解压和配置
# 解压文件
sudo tar -xzf flink-1.17.2-bin-scala_2.12.tgz
# 重命名(可选,方便使用)
sudo mv flink-1.17.2 flink
# 修改权限
sudo chown -R $(whoami) /opt/bigdata/flink
# 清理安装包(可选)
sudo rm flink-1.17.2-bin-scala_2.12.tgz
3. 配置环境变量
编辑 shell 配置文件:
nano ~/.zshrc
在文件末尾添加:
# Flink 配置
export FLINK_HOME=/opt/bigdata/flink
export PATH=$FLINK_HOME/bin:$PATH
保存并退出(按 Ctrl+X,然后按 Y,再按 Enter)
使配置生效:
source ~/.zshrc
4. 验证安装
flink --version
应该看到类似输出:
Version: 1.17.2, Commit ID: ...
三、修改端口配置(避免与 Spark 冲突)
1. 编辑 Flink 配置文件
nano /opt/bigdata/flink/conf/flink-conf.yaml
2. 修改关键配置
找到或添加以下配置:
# JobManager 地址
jobmanager.rpc.address: localhost
# JobManager RPC 端口
jobmanager.rpc.port: 6123
# Web UI 端口(改成 8082,避免与 Spark 8081 冲突)
rest.port: 8082
# TaskManager 配置
taskmanager.numberOfTaskSlots: 4
# 内存配置
taskmanager.memory.process.size: 1728m
jobmanager.memory.process.size: 1600m
# 默认并行度
parallelism.default: 1
保存并退出。
3. 端口分配说明
| 服务 | 端口 | 说明 |
|---|---|---|
| Spark Master UI | 8080 | Spark 集群管理界面 |
| Spark Application UI | 4040 | Spark 任务运行界面 |
| Spark History Server | 8081 | Spark 历史任务界面 |
| Flink Dashboard | 8082 | Flink Web 管理界面 |
四、启动 Flink 集群
1. 启动集群
start-cluster.sh
2. 验证启动成功
检查 Java 进程:
jps
应该看到:
StandaloneSessionClusterEntrypoint(JobManager)TaskManagerRunner(TaskManager)
检查端口占用:
lsof -i :8082
查看日志:
tail -f /opt/bigdata/flink/log/flink-*-standalonesession-*.log
3. 访问 Web UI
打开浏览器访问:http://localhost:8082
注意:正常默认的端口号是8081,与spark ui的端口号冲突,这里需要先停止flink程序,然后修改默认的端口号为8082.
你应该看到 Flink Dashboard,包含:
- 任务管理
- Task Managers
- Job Manager
- 配置信息
4. 停止集群
stop-cluster.sh
五、运行测试示例
1. 运行内置的 WordCount 示例
# 确保集群已启动
start-cluster.sh
# 运行示例程序
flink run /opt/bigdata/flink/examples/streaming/WordCount.jar
# 查看输出结果
tail -f /opt/bigdata/flink/log/flink-*-taskexecutor-*.out
2. 在 Web UI 中查看
访问 http://localhost:8082,可以看到:
- 正在运行的任务
- 任务执行计划
- 性能指标
六、在 IDEA 中开发 Flink 程序
1. 创建或更新 Maven 项目
在你的 pom.xml 中添加 Flink 依赖:
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<scala.version>2.12.18</scala.version>
<scala.binary.version>2.12</scala.binary.version>
<spark.version>3.5.0</spark.version>
<flink.version>1.17.2</flink.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Scala 核心库 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<!-- Flink Streaming Scala API -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
<!-- Flink 客户端 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients</artifactId>
<version>${flink.version}</version>
</dependency>
<!-- Flink Table API (可选) -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
</dependency>
</dependencies>
2. 创建第一个 Flink 程序
在 src/main/scala/com/example 下创建 FlinkDemo.scala:
package com.example
import org.apache.flink.streaming.api.scala._
object FlinkDemo {
def main(args: Array[String]): Unit = {
// 创建流执行环境
val env = StreamExecutionEnvironment.getExecutionEnvironment
// 创建数据源
val data = env.fromElements(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
// 过滤小于 5 的数字
val filtered = data.filter(_ < 5)
// 打印结果
filtered.print()
// 执行任务
env.execute("Flink Demo")
}
}
3. 运行程序
在 IDEA 中:
- 右键点击
FlinkDemo.scala - 选择 Run 'FlinkDemo'
输出结果:
1
2
3
4
七、常用命令总结
集群管理
# 启动集群
start-cluster.sh
# 停止集群
stop-cluster.sh
# 查看 Flink 进程
jps | grep -E "Standalone|TaskManager"
# 查看版本
flink --version
任务提交
# 提交任务
flink run /path/to/your-job.jar
# 列出正在运行的任务
flink list
# 取消任务
flink cancel <job-id>
日志查看
# 查看 JobManager 日志
tail -f $FLINK_HOME/log/flink-*-standalonesession-*.log
# 查看 TaskManager 日志
tail -f $FLINK_HOME/log/flink-*-taskexecutor-*.log
# 查看任务输出
tail -f $FLINK_HOME/log/flink-*-taskexecutor-*.out
清理日志
rm -rf /opt/bigdata/flink/log/*
八、常见问题排查
1. 端口被占用
问题:启动失败,提示端口已被占用
解决:
# 查看端口占用
lsof -i :8082
# 杀掉占用端口的进程
kill -9 <PID>
# 或修改配置文件中的 rest.port
2. Java 版本不匹配
问题:启动失败,Java 版本错误
解决:
# 检查 Java 版本
java -version
# 如果需要,设置 JAVA_HOME
export JAVA_HOME=/path/to/java11
3. 内存不足
问题:TaskManager 启动失败
解决:修改 flink-conf.yaml:
taskmanager.memory.process.size: 1024m
jobmanager.memory.process.size: 1024m
4. 权限问题
问题:无法启动或写入日志
解决:
sudo chown -R $(whoami) /opt/bigdata/flink
chmod -R 755 /opt/bigdata/flink
九、版本兼容性总结
| 组件 | 版本 | 状态 |
|---|---|---|
| Java | 11 | ✅ 完美兼容 |
| Scala | 2.12 | ✅ 完美兼容 |
| Spark | 3.5.0 | ✅ 稳定版本 |
| Flink | 1.17.2 | ✅ 推荐版本 |
2万+

被折叠的 条评论
为什么被折叠?



