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

相关推荐
知了学历孙老师4 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
XCDoris5 小时前
郴州logo设计机构
大数据·人工智能·python
物联网软硬件开发-轨物科技5 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
zyseo86 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai8 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
skywsp9 小时前
Agent智能体架构设计-知识整理
大数据·人工智能
starzy199010 小时前
KafkaProducer 加载元数据:一条 MetadataRequest 的完整旅程
大数据·kafka
内容营销专家刘鑫炜10 小时前
AI搜索实战专家刘鑫炜:做AI搜索第一步,首先得让 AI 看到你
大数据·人工智能
大大大大晴天10 小时前
每天认识一个组件:Elasticsearch
大数据
Simon_lca10 小时前
ZARA、H&M、SHEIN验厂差异全对比:一套底层记录,三套接口输出
大数据·人工智能·经验分享·科技·制造