Apache Flink 是一个分布式流处理框架,广泛用于实时数据计算场景。在生产环境中,Flink 支持多种部署模式,本文详细介绍 Local、Standalone、YARN 三种主流部署方式,帮助你根据实际需求选择合适的部署方案。
Flink 支持的安装模式
Flink 支持三种主要的安装模式,每种模式适用于不同的场景:
| 模式 | 特点 | 适用场景 |
|---|---|---|
| Local(本地) | 单机运行,开箱即用 | 开发调试、学习 |
| Standalone | Flink 自带集群管理 | 中小规模生产环境 |
| YARN | 基于 Hadoop YARN 资源管理 | 大规模生产环境 |
1. Local 本地模式
Local 模式是 Flink 最简单的运行方式,无需额外配置,适合快速入门和开发调试。
主要特点:
- 无需额外配置,开箱即用
- 在单个 JVM 进程中运行
- 支持本地 IDE 调试
- 适合学习 Flink 基础功能
适用场景:
- 本地开发测试
- 小规模数据验证
- 学习 Flink API
启动方式:
cd /opt/servers/flink-1.11.1/bin
./start-local.sh
2. Standalone 独立模式
Standalone 模式是 Flink 自带的集群管理方式,不依赖外部资源管理器,适合中小规模生产环境。
主要特点:
- Flink 自身提供集群管理
- 包含 JobManager 和 TaskManager
- 需要手动部署和配置
- 资源分配由 Flink 完成
优点:
- 简洁易用,不需要额外资源管理系统
- 独立性强,不依赖外部系统
- 低延迟,不涉及外部资源调度
缺点:
- 不支持动态资源扩展
- 大规模集群管理复杂
- 缺乏自动化资源分配
3. YARN 模式
YARN 模式基于 Hadoop YARN 进行资源管理,适合大规模生产环境。
主要特点:
- 资源由 YARN 统一调度
- 支持动态资源分配
- 可与其他 YARN 应用共存
运行模式:
- Session 模式:创建长期运行的集群,多个作业共享资源
- Per-Job 模式:每个作业独立分配资源,作业完成后释放
优点:
- 资源利用率高
- 与 Hadoop 生态无缝集成
- 支持动态扩缩容
集群规划
本文示例使用三台机器进行部署:
| 主机名 | 配置 | 角色 |
|---|---|---|
| h121.wzk.icu | 2C4G | JobManager + TaskManager |
| h122.wzk.icu | 2C4G | TaskManager |
| h123.wzk.icu | 2C2G | TaskManager |
环境准备
Java 环境配置
确保所有节点已配置 JAVA_HOME:
echo $JAVA_HOME
# 输出示例:/usr/local/java/jdk1.8.0_301
SSH 无密码登录
配置三台机器之间的 SSH 无密码登录:
# 在 h121 节点执行
ssh-keygen -t rsa
ssh-copy-id h121.wzk.icu
ssh-copy-id h122.wzk.icu
ssh-copy-id h123.wzk.icu
下载与安装
选择稳定版本 Flink 1.11.1:
cd /opt/software/
wget https://archive.apache.org/dist/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz
tar -zxvf flink-1.11.1-bin-scala_2.12.tgz
mv flink-1.11.1 /opt/servers/
将安装包同步到所有节点:
scp -r /opt/servers/flink-1.11.1 h122.wzk.icu:/opt/servers/
scp -r /opt/servers/flink-1.11.1 h123.wzk.icu:/opt/servers/
Standalone 模式配置
flink-conf.yaml
修改 Flink 配置文件:
# jobmanager.rpc.address 配置 JobManager 地址
jobmanager.rpc.address: h121.wzk.icu
# 配置 TaskManager 的 Slot 数量
taskmanager.numberOfTaskSlots: 2
workers 文件
配置 TaskManager 节点列表:
cd /opt/servers/flink-1.11.1/conf
vim workers
写入以下内容:
h121.wzk.icu
h122.wzk.icu
h123.wzk.icu
masters 文件
配置 JobManager 节点:
vim masters
写入以下内容:
h121.wzk.icu:8081
启动集群
完成配置后,启动 Flink 集群:
cd /opt/servers/flink-1.11.1/bin/
./start-cluster.sh
启动成功后,访问 Flink Web UI:
http://h121.wzk.icu:8081/#/overview
运行测试
Flink 提供了丰富的示例程序,可以通过以下命令运行 WordCount 示例:
cd /opt/servers/flink-1.11.1/bin
./flink run ../examples/streaming/WordCount.jar
示例程序会读取 wc.input 文件(如果存在),或者从参数指定的数据源读取数据,进行词频统计。
部署模式选择建议
根据实际业务需求选择合适的部署模式:
- 学习开发:选择 Local 模式,快速上手
- 中小规模生产:选择 Standalone 模式,部署简单
- 大规模生产:选择 YARN 模式,资源利用率高
Standalone 模式适用于节点数量少于 10 台、资源固定且作业负载稳定的场景。对于需要频繁调整资源的生产环境,建议使用 YARN 或 Kubernetes 部署模式。