1 Flink集群架构简介
Flink集群主要包括两类节点:
JobManager:负责协调、资源分配、任务调度等(可高可用部署多个)。
TaskManager:负责具体的数据处理任务(可横向扩展,一般在3台及以上)。
2 环境准备
服务器准备:准备多台Linux服务器(如3台),网络可互通。
JDK安装:所有节点需安装JDK 1.8或以上(建议用OpenJDK)。
SSH免密登录:JobManager节点需能免密登录所有TaskManager节点(便于一键启动/停止集群)。
三、下载 与解压Flink以Flink 1.18.0为例:
wget https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz
tar -zxvf flink-1.18.0-bin-scala_2.12.tgz
mv flink-1.18.0 /opt/flink
一键获取完整项目代码
建议所有节点用同样路径。
四、配置环境变量
在所有节点的~/.bashrc或/etc/profile中添加:
export FLINK_HOME=/opt/flink
export PATH=PATH:FLINK_HOME/bin
一键获取完整项目代码
执行 source ~/.bashrc 使配置生效。
五、配置Flink集群
进入$FLINK_HOME/conf目录,主要编辑以下文件:
- flink-conf.yaml(核心配置)
jobmanager.rpc.address: master-node-hostname
jobmanager.rpc.port: 6123
taskmanager.numberOfTaskSlots: 4
parallelism.default: 2
一键获取完整项目代码
jobmanager.rpc.address:指定JobManager主节点的主机名或IP。
taskmanager.numberOfTaskSlots:每个TaskManager的槽数(通常与CPU核数相同)。
parallelism.default:默认并行度。
- masters(JobManager节点)
如高可用可写多个,一般写一个:
master-node-hostname:8081
一键获取完整项目代码
(8081为Web UI端口)
- workers(TaskManager节点)
每行一个TaskManager节点主机名或IP:
worker1-hostname
worker2-hostname
worker3-hostname
一键获取完整项目代码
六、分发Flink到所有节点
如果只在一台机器上解压,可用scp同步到其他节点:
一键获取完整项目代码
bash复制
scp -r /opt/flink user@worker1:/opt/
scp -r /opt/flink user@worker2:/opt/
一键获取完整项目代码
七、启动Flink集群
在JobManager节点执行:
cd /opt/flink
./bin/start-cluster.sh
一键获取完整项目代码
会自动在masters和workers文件所列节点启动相应服务。
八、验证集群
Web UI
浏览器访问 http://master-node-ip:8081 ,可查看集群状态。
进程检查
在各节点用jps命令,JobManager节点应有StandaloneSessionClusterEntrypoint,TaskManager节点有TaskManagerRunner。
运行示例任务
可在JobManager节点执行
./bin/flink run examples/streaming/WordCount.jar --input README.txt --output /tmp/result
一键获取完整项目代码
九、常见问题
端口冲突:检查6123、8081端口是否被占用。
节点无法启动:检查免密SSH、主机名是否可解析、网络是否互通。
内存不足:可在flink-conf.yaml中调整taskmanager.memory.process.size等参数。
十、集群停止
在JobManager节点执行:
./bin/stop-cluster.sh
一键获取完整项目代码
十一、Flink高可用(HA)集群配置
Flink Standalone 模式下,单个 JobManager 容易成为单点故障。高可用方案主要基于 ZooKeeper 协调多个 JobManager,保证服务不中断。
- 环境准备
多台服务器,建议3台以上
安装 ZooKeeper 集群(至少3个节点)
各节点已部署 Flink 和 JDK
- ZooKeeper 安装与配置
假设你已安装好 ZooKeeper,并启动了集群,记录下 ZooKeeper 集群地址(如:zk1:2181,zk2:2181,zk3:2181)
- 修改 Flink 配置(flink-conf.yaml)
添加/修改如下内容:
JobManager HA配置
high-availability: zookeeper
high-availability.storageDir: file:///opt/flink/ha/
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181
high-availability.zookeeper.path.root: /flink
JobManager集群节点
jobmanager.rpc.address: master1
jobmanager.rpc.port: 6123
其它常规配置
taskmanager.numberOfTaskSlots: 4
一键获取完整项目代码
- 配置 JobManager 列表(masters 文件)
如有两个 JobManager 节点:
master1:8081
master2:8081
一键获取完整项目代码
- 启动 HA 集群
在所有 JobManager 节点都执行:
./bin/start-cluster.sh
一键获取完整项目代码
此时会自动选举一个 Active JobManager,其余为 Standby。
任意节点挂掉,Standby 会自动接管。
- 验证
查看 ZooKeeper /flink 路径有相关数据
访问任一 JobManager 的 Web UI(如 master1:8081、master2:8081)
杀死当前 Active JobManager,观察 Standby 是否自动切换
十二、Flink on YARN 部署
适用于 Hadoop 环境,资源由 YARN 管理。
- 环境准备
已部署 Hadoop/YARN 集群
Flink 安装在任一节点即可
- 启动 Session 集群
./bin/yarn-session.sh -d
一键获取完整项目代码
参数说明:
-d 后台启动
-n <numTaskManagers> 指定 TaskManager 数量
-s <slotsPerTaskManager> 指定每个 TaskManager 的槽数
- 提交作业
./bin/flink run -m yarn-cluster -p 4 examples/streaming/WordCount.jar
一键获取完整项目代码
- 停止 Session 集群
./bin/yarn-session.sh -shutdown
一键获取完整项目代码
- 其他模式
Per-Job 模式:每个作业单独启动一个 Flink 集群,适合大作业隔离。
Session 模式:多个作业共享一个 Flink 集群,资源利用率高。
十三、Flink on Mesos 部署
Mesos 已逐渐被 K8S 取代,简单说明:
- 环境准备
已部署 Mesos 集群
Flink 安装在任一节点即可
- 启动 Flink Mesos 集群
./bin/mesos-appmaster.sh \
--master mesos-master:5050 \
--zk mesos-zk:2181 \
--taskManagerCount 4
一键获取完整项目代码
- 提交作业
./bin/flink run -m mesos-master:5050 examples/streaming/WordCount.jar
一键获取完整项目代码
十四、Flink on Kubernetes(K8S)部署
K8S 是云原生的主流方案,支持高可用、弹性伸缩。
- 环境准备
已部署 K8S 集群
kubectl 命令可用
Flink Docker 镜像(如 flink:1.18.0)
- 下载官方 K8S 部署模板
官方文档
- Standalone 模式部署
方式一:使用 YAML 文件
下载 官方 YAML 示例
修改 jobmanager, taskmanager 副本数、资源等
apiVersion: apps/v1
kind: Deployment
metadata:
name: flink-jobmanager
spec:
replicas: 1
...
apiVersion: apps/v1
kind: Deployment
metadata:
name: flink-taskmanager
spec:
replicas: 3
...
一键获取完整项目代码
vb
部署:
kubectl apply -f flink-jobmanager.yaml
kubectl apply -f flink-taskmanager.yaml
一键获取完整项目代码
方式二:使用 Flink Kubernetes Operator
参考 官方 Operator 文档
Operator 支持声明式作业、自动高可用、资源管理等
- Session/Per-Job 模式
Session:多个作业共享一个 Flink 集群
Per-Job:每个作业独立集群,推荐生产环境
- 访问 Web UI
通过端口转发:
kubectl port-forward deployment/flink-jobmanager 8081:8081
一键获取完整项目代码
浏览器访问 localhost:8081
- 资源与参数配置
通过 YAML 文件指定 CPU、内存等资源
可挂载外部存储(如 S3、HDFS)
版权声明:本文为CSDN博主「猩火燎猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/onlymscn/article/details/151900475
|----|------|----------------------------------------------------------------------------------------------------------------------------|----|
| 序号 | 名称 | 网址 | 备注 |
| 1 | 安装教程 | Flink集群配置安装详解 _flink安装-CSDN博客 | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
[学习网址]