Flink 集群部署指南原创
# Flink 集群部署详细指南(基于 CentOS 7.9)
本文旨在帮助你基于 CentOS 7.9 完整地部署 Apache Flink 集群,涵盖从安装到高可用配置和日常运维,并附带一些性能优化建议。我们还将针对生产环境中的常见问题进行探讨,确保部署稳定且高效。
# 1. Flink 简介
Apache Flink 是一个开源的分布式流处理框架,支持实时数据流和批处理。它在流数据处理、数据管道构建以及大数据分析方面具有强大的能力。Flink 集群模式由以下组件组成:
- JobManager:负责任务调度、资源分配和管理,是 Flink 的核心。
- TaskManager:执行实际任务,可以根据需求水平扩展多个 TaskManager 实例,以提升并行处理能力。
- Dispatcher:提供 REST API,用于提交任务。
- ZooKeeper (可选):用于高可用部署,确保 JobManager 的状态在宕机时能够自动恢复。
# 2. 环境准备
# 操作系统和依赖工具
- 操作系统:本文基于 CentOS 7.9 进行部署,其他 Linux 发行版如 Ubuntu 也适用。
- Java:Flink 需要 JDK 1.8 或 11,推荐使用稳定的 JDK 11。
- SSH:用于节点间通信,需配置无密码登录。
- ZooKeeper:用于实现 Flink 集群的高可用性(可选)。
# 配置要求
- 至少两台服务器(1 个 JobManager + 1 个 TaskManager),建议配置 4 GB 内存和 4 核 CPU 的机器。
- 确保服务器之间的网络互通,且防火墙已正确配置。
# 3. Flink 集群部署步骤
# 3.1 安装 JDK 11
首先,安装 Java 环境:
yum install java-11-openjdk-devel -y
java -version # 确认安装版本
1
2
2
# 3.2 下载和解压 Flink
从 Apache 官方网站下载最新的稳定版 Flink(如 1.19.x):
wget https://downloads.apache.org/flink/flink-1.19.1/flink-1.19.1-bin-scala_2.12.tgz
tar -xzf flink-1.19.1-bin-scala_2.12.tgz
cd flink-1.19.1
1
2
3
2
3
# 3.3 配置 Flink
在 conf
目录下修改 Flink 的配置文件:
- 编辑
flink-conf.yaml
文件:
jobmanager.rpc.address: <JobManager的IP或主机名>
taskmanager.numberOfTaskSlots: 4 # 每个 TaskManager 的 Slot 数量,根据硬件性能调整
parallelism.default: 2 # 默认并行度
state.backend: filesystem # 使用文件系统存储状态
state.checkpoints.dir: file:///path/to/checkpoints # Checkpoint 保存路径
state.savepoints.dir: file:///path/to/savepoints # Savepoint 保存路径
1
2
3
4
5
6
2
3
4
5
6
- 编辑
masters
文件,设置 JobManager 的 IP 地址和端口:
<JobManager的IP>:8081
1
- 编辑
workers
文件,列出所有 TaskManager 节点的 IP 地址:
<TaskManager1的IP>
<TaskManager2的IP>
1
2
2
# 3.4 分发 Flink 到各节点
如果集群使用多台服务器,则需要将 Flink 安装包分发到其他 TaskManager 节点:
scp -r flink-1.19.1 user@<TaskManager1的IP>:/home/user/
scp -r flink-1.19.1 user@<TaskManager2的IP>:/home/user/
1
2
2
确保每个节点的配置文件一致。
# 3.5 启动 Flink 集群
- 启动 JobManager:
./bin/start-cluster.sh
1
验证集群:访问
http://<JobManager的IP>:8081
,检查 Flink Web UI,确认集群正常启动,TaskManager 已注册。启动 TaskManager:
./bin/taskmanager.sh start
1
# 4. 高可用配置(可选)
为了确保集群的高可用性,我们需要配置 ZooKeeper 来保存 JobManager 的状态信息。
# 4.1 安装 ZooKeeper
yum install zookeeper -y
1
# 4.2 配置高可用
修改 flink-conf.yaml
,添加以下配置:
high-availability: zookeeper
high-availability.storageDir: hdfs:///flink/recovery # 或者使用本地文件系统
high-availability.zookeeper.quorum: <ZooKeeper的IP>:2181
high-availability.cluster-id: /flink-cluster
1
2
3
4
2
3
4
# 4.3 启动 ZooKeeper
zkServer.sh start
1
通过集成 ZooKeeper,Flink 将支持 JobManager 的自动故障切换与恢复。
# 5. 日常运维
# 5.1 日志管理
Flink 生成的日志存储在 log
目录下,可以通过以下命令查看实时日志:
tail -f log/flink-*.log
1
为避免日志文件过大,推荐使用 logrotate
进行日志轮转管理。
# 5.2 监控集群
在生产环境中,监控集群至关重要。可以通过 Flink 自带的 Web UI 监控集群状态,或者集成 Prometheus 和 Grafana 获取更详细的资源监控数据。
# 6. 性能优化建议
# 6.1 Task Slots 和并行度配置
- Task Slots 数量:可以根据每台服务器的 CPU 核心数和内存来调整
taskmanager.numberOfTaskSlots
,通常与 CPU 核心数匹配。 - 默认并行度:根据作业负载调整
parallelism.default
,并确保资源分配合理。
# 6.2 内存优化
编辑 flink-conf.yaml
,根据任务需求调整 TaskManager 的堆内存大小:
taskmanager.memory.process.size: 4g # 任务复杂度决定堆大小
1
上次更新: 10/2/2024
- 02
- MongoDB 集群Config Server 复制集的工作原理09-14
- 03
- MongoDB 集群架构介绍09-14