Flink集群配置与部署全攻略

1 Flink集群架构简介

Flink集群主要包括两类节点:

JobManager:负责协调、资源分配、任务调度等(可高可用部署多个)。

TaskManager:负责具体的数据处理任务(可横向扩展,一般在3台及以上)。

2 环境准备

服务器准备:准备多台Linux服务器(如3台),网络可互通。
JDK安装:所有节点需安装JDK 1.8或以上(建议用OpenJDK)。
SSH免密登录:JobManager节点需能免密登录所有TaskManager节点(便于一键启动/停止集群)。

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目录,主要编辑以下文件:

  1. 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:默认并行度。

  1. masters(JobManager节点)

如高可用可写多个,一般写一个:

master-node-hostname:8081

一键获取完整项目代码

(8081为Web UI端口)

  1. 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,保证服务不中断。

  1. 环境准备

多台服务器,建议3台以上

安装 ZooKeeper 集群(至少3个节点)

各节点已部署 Flink 和 JDK

  1. ZooKeeper 安装与配置

假设你已安装好 ZooKeeper,并启动了集群,记录下 ZooKeeper 集群地址(如:zk1:2181,zk2:2181,zk3:2181)

  1. 修改 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

一键获取完整项目代码

  1. 配置 JobManager 列表(masters 文件)

如有两个 JobManager 节点:

master1:8081

master2:8081

一键获取完整项目代码

  1. 启动 HA 集群

在所有 JobManager 节点都执行:

./bin/start-cluster.sh

一键获取完整项目代码

此时会自动选举一个 Active JobManager,其余为 Standby。

任意节点挂掉,Standby 会自动接管。

  1. 验证

查看 ZooKeeper /flink 路径有相关数据

访问任一 JobManager 的 Web UI(如 master1:8081、master2:8081)

杀死当前 Active JobManager,观察 Standby 是否自动切换

十二、Flink on YARN 部署

适用于 Hadoop 环境,资源由 YARN 管理。

  1. 环境准备

已部署 Hadoop/YARN 集群

Flink 安装在任一节点即可

  1. 启动 Session 集群

./bin/yarn-session.sh -d

一键获取完整项目代码

参数说明:

-d 后台启动

-n <numTaskManagers> 指定 TaskManager 数量

-s <slotsPerTaskManager> 指定每个 TaskManager 的槽数

  1. 提交作业

./bin/flink run -m yarn-cluster -p 4 examples/streaming/WordCount.jar

一键获取完整项目代码

  1. 停止 Session 集群

./bin/yarn-session.sh -shutdown

一键获取完整项目代码

  1. 其他模式

Per-Job 模式:每个作业单独启动一个 Flink 集群,适合大作业隔离。

Session 模式:多个作业共享一个 Flink 集群,资源利用率高。

十三、Flink on Mesos 部署

Mesos 已逐渐被 K8S 取代,简单说明:

  1. 环境准备

已部署 Mesos 集群

Flink 安装在任一节点即可

  1. 启动 Flink Mesos 集群

./bin/mesos-appmaster.sh \

--master mesos-master:5050 \

--zk mesos-zk:2181 \

--taskManagerCount 4

一键获取完整项目代码

  1. 提交作业

./bin/flink run -m mesos-master:5050 examples/streaming/WordCount.jar

一键获取完整项目代码

十四、Flink on Kubernetes(K8S)部署

K8S 是云原生的主流方案,支持高可用、弹性伸缩。

  1. 环境准备

已部署 K8S 集群

kubectl 命令可用

Flink Docker 镜像(如 flink:1.18.0)

  1. 下载官方 K8S 部署模板

官方文档

  1. 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 支持声明式作业、自动高可用、资源管理等

  1. Session/Per-Job 模式

Session:多个作业共享一个 Flink 集群

Per-Job:每个作业独立集群,推荐生产环境

  1. 访问 Web UI

通过端口转发:

kubectl port-forward deployment/flink-jobmanager 8081:8081

一键获取完整项目代码

浏览器访问 localhost:8081

  1. 资源与参数配置

通过 YAML 文件指定 CPU、内存等资源

可挂载外部存储(如 S3、HDFS)


版权声明:本文为CSDN博主「猩火燎猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/onlymscn/article/details/151900475

|----|------|----------------------------------------------------------------------------------------------------------------------------|----|
| 序号 | 名称 | 网址 | 备注 |
| 1 | 安装教程 | Flink集群配置安装详解 _flink安装-CSDN博客 | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
[学习网址]

相关推荐
智途 Tech1 小时前
2026年分析多个Excel、CSV和网页数据的AI工具清单:Tabbit 浏览器多源引用
大数据·人工智能·excel
龙亘川2 小时前
数智赋能退役军人服务:V1.0 系统搭建全生命周期闭环服务体系
大数据·数据库·人工智能
Tongzhi20263 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
智购科技自动售卖机厂家3 小时前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
SelectDB技术团队3 小时前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·doris·数据湖·湖仓一体·lakehouse·湖仓分析·多模分析
eBest数字化转型方案3 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
Han.miracle3 小时前
Elasticsearch深度分页问题完整解析
大数据·elasticsearch·搜索引擎
小柯南敲键盘4 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
GlobalInfo4 小时前
正文回答“是什么”,附录回答“为什么是这样”
大数据·人工智能
数字孪生视频孪生4 小时前
空间智能技术|跨镜轨迹全域可溯,无感定位无扰赋能落地
大数据·运维·人工智能·重构·架构