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

相关推荐
guwentian6 小时前
Git Worktree 实战:用并行多 Agent 把开发提速 N 倍
大数据·git·elasticsearch·wroktree
2503_931712489 小时前
OpenInsight领衔:企业AI数据分析平台(Data Agent/智能问数/智能数据报告)
大数据
朴马丁9 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
~央千澈~10 小时前
从“拟声”到“生成”:AI音效背后的技术原理·优雅草AI音乐·AI音乐技术研究
大数据·人工智能·ai·音频
Elastic 中国社区官方博客11 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索
大大大大晴天11 小时前
高并发报表与多维分析场景下,StarRocks 应该怎样用
大数据
哥本哈士奇12 小时前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
阿里云大数据AI技术13 小时前
DataWorks Data Agent 7月升级: Qwen3.8-max 加持、管住 Token、打通 IM、铺向全球
大数据·人工智能·agent
2601_9557598813 小时前
如何降低 Claude API 批量生产返工率
大数据·人工智能·算法
汇策研习社13 小时前
斐波那契均线交易体系:21/55/89三重均线趋势战法详解
大数据·经验分享·金融·区块链·fastbull