大数据 -111 Flink 安装部署 On YARN 部署全流程详解:环境变量、配置与资源申请

点一下关注吧!!!非常感谢!!持续更新!!!
🚀 AI 篇持续更新中!(长期更新)
AI 炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的模型 + 深度思考模型 + 实时路由”,持续打造实用 AI 工具指南!📐🤖
💻 Java 篇正式开启!(300 篇)
目前 2025 年 09 月 29 日更新到:Java-136 深入浅出 MySQL Spring Boot @Transactional 使用指南:事务传播、隔离级别与异常回滚策略 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解

章节内容
上节完成了如下的内容:
基础环境规划
集群规划
下载安装
Standalone 模式启动

YARN 模式部署

环境变量
配置的结果如下图所示:

退出保存,并刷新环境变量。
yarn-site
我们需要在原来的基础上,写入一些新的内容:
配置样式如下图所示:

同步配置
我们需要在:
h121 节点
h122 节点
h123 节点这三台机器上,都配置好一样的内容。以下是扩展后的详细配置说明:
Flink 环境配置
需要配置 flink-conf.yaml 文件中的参数,包括:
jobmanager.rpc.address: 主节点 IP
taskmanager.numberOfTaskSlots: 根据机器资源设置
parallelism.default: 默认并行度
配置 masters 和 workers 文件,指定集群节点
环境变量 profile 配置
在/etc/profile 或~/.bashrc 中添加:
执行
source /etc/profile
使配置生效
yarn-site.xml 配置
关键参数包括:
yarn.resourcemanager.hostname: RM 主机名
yarn.nodemanager.aux-services: mapreduce_shuffle
yarn.nodemanager.resource.memory-mb: 节点可用内存
yarn.scheduler.maximum-allocation-mb: 单任务最大内存
服务停止流程
停止 Flink 服务:
停止 Hadoop 集群:
确认服务停止:
服务重启流程
重启 Hadoop 集群:
验证服务状态:
注意事项
建议按顺序执行停止和启动操作
每次修改配置后需要重启相关服务
可通过日志文件排查问题:
Hadoop 日志目录:$HADOOP_HOME/logs
Flink 日志目录:$FLINK_HOME/log
注:具体路径和参数值需根据实际环境调整。对于生产环境,建议先在测试环境验证配置变更。
我这里使用之前的 rsync-script 工具进行同步了:

漫长的等待之后,可以看到已经传输完毕了:

停止 Hadoop
h121

停止 YARN 集群
h123
h123 节点执行(ResourceManager 节点在这里):

停止 Flink
h121 节点执行:

停止结果
h121
(还剩下一个 ZK 的服务,非必须,想结束的话也可以结束掉)

h122

h123

启动 Hadoop 集群
一切确认没有问题之后,我们就可以重新启动了。
h121

h122

h123

启动 YARN 集群
h123
为了防止 YARN 启动异常,我们需要到 h123 保证启动一次:

申请资源
查看帮助
可以看到该脚本的说明如下:

测试脚本 1 申请资源
上面的脚本的含义是:
-n 表示申请 2 个容器 这里就是指多少个 TaskManager
-s 表示每个 TaskManager 的 Slots 数量
-tm 表示每个 TaskManager 的内存大小
-d 表示后台的方式运行程序
脚本 1 解释
上面的脚本会向 YARN 申请 3 个 Container,即便写的是 2 个,因为 ApplicationMaster 和 JobManager 有一个额外的容器,一旦将 Flink 部署到 YARN 集群中,就会显示 JobManger 的连接详细信息。
2 个 Container 启动 TaskManager -n 2,每个 TaskManager 拥有 1 个 TaskSlots -s 1,并且向每个 TaskManager 的 Container 申请 800M 的内存,以及一个 ApplicationMaster jobManager 如果不想让 Flink YRAN 客户端始终运行,那么也可以启动分离的 YARN 会话,被参数被称为-d 或--detached,这种情况下,Flink YARN 客户端只会将 Flink 提交给集群,然后关闭它自己。
整个过程大概是:yarn-session.sh(开辟资源) + Flink run(提交任务)
使用 Flink 中的 yarn-session,会启动两个必要服务 JobManager 和 TaskManager
客户端通过 Flink run 提交作业
yarn-session 会一直启动,不停的接收客户端提交的作业
这种方式创建的 Flink 集群会独占资源
如果有大量的 作业/任务 较小、工作时间短,适合使用这种方式,减少资源创建的时间。
脚本 1 执行结果
可以看到一些日志内容:
运行过程如下图所示:

测试脚本 2 提交运行
我们也可以直接在 YARN 上提交运行 Flink 作业(Run a Flink job on YARN)
上述参数的一些解释:
-m JobManager 的地址
-yn TaskManager 的个数
停止 yarn-cluster
脚本 2 解释

版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/e8e577ae97e47c3ea3add5865】。文章转载请联系作者。
评论