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博客 | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
[学习网址]

相关推荐
龙孚信息1 小时前
DXP进化论 贰-品牌出海深水区,你的数字体验基础设施跟上了吗?
大数据
kirs_ur3 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能
AI探索先锋3 小时前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
zzzll11114 小时前
字节 Agent 三面:讲讲 Agent 的记忆系统怎么设计?
大数据
聚焦前沿4 小时前
涡街流量计用户如何判断厂家是否靠谱
大数据·人工智能
莫名的好感°6 小时前
国内AI视频工具哪家强?FusionAI聚合即梦Seedance、可灵Kling、HappyHorse、Google Veo,一个平台看懂所有选择
大数据·人工智能
咖啡星人k6 小时前
企业内网引入 AI 编程:MonkeyCode 私有化部署思路
大数据·人工智能·私有化部署·monkeycode
oort1237 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
AI小码7 小时前
把动作「画」给视频世界模型,跨本体双向推演,李飞飞参与
大数据·人工智能·算法·ai·大模型·音视频·编程
Elastic 中国社区官方博客9 小时前
不到 5 分钟完成本地部署:Jina embedding 模型现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·embedding·jina