写点什么

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

作者:武子康
  • 2025-09-30
    山东
  • 本文字数:3306 字

    阅读完需:约 11 分钟

大数据-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 模式部署

环境变量

vim /etc/profileexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_CLASSPATH=`hadoop classpath`
复制代码


配置的结果如下图所示:



退出保存,并刷新环境变量。

yarn-site

cd /opt/servers/hadoop-2.9.2/etc/hadoopvim yarn-site.xml
复制代码


我们需要在原来的基础上,写入一些新的内容:


<!-- YRAN Flink 相关 --><property>        <name>yarn.nodemanager.pmem-check-enabled</name>        <value>false</value></property><property>        <name>yarn.nodemanager.vmem-check-enabled</name>        <value>false</value></property><property>        <name>yarn.resourcemanager.address</name>        <value>h123.wzk.icu:8032</value></property><property>        <name>yarn.resourcemanager.scheduler.address</name>        <value>h123.wzk.icu:8030</value></property><property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>h123.wzk.icu:8031</value></property>
复制代码


配置样式如下图所示:


同步配置

我们需要在:


  • h121 节点

  • h122 节点

  • h123 节点这三台机器上,都配置好一样的内容。以下是扩展后的详细配置说明:


  1. Flink 环境配置


  • 需要配置 flink-conf.yaml 文件中的参数,包括:

  • jobmanager.rpc.address: 主节点 IP

  • taskmanager.numberOfTaskSlots: 根据机器资源设置

  • parallelism.default: 默认并行度

  • 配置 masters 和 workers 文件,指定集群节点


  1. 环境变量 profile 配置


  • 在/etc/profile 或~/.bashrc 中添加:


  export HADOOP_HOME=/path/to/hadoop  export FLINK_HOME=/path/to/flink  export PATH=$PATH:$HADOOP_HOME/bin:$FLINK_HOME/bin
复制代码


  • 执行source /etc/profile使配置生效


  1. yarn-site.xml 配置


  • 关键参数包括:

  • yarn.resourcemanager.hostname: RM 主机名

  • yarn.nodemanager.aux-services: mapreduce_shuffle

  • yarn.nodemanager.resource.memory-mb: 节点可用内存

  • yarn.scheduler.maximum-allocation-mb: 单任务最大内存


  1. 服务停止流程


  • 停止 Flink 服务:


  $FLINK_HOME/bin/stop-cluster.sh
复制代码


  • 停止 Hadoop 集群:


  $HADOOP_HOME/sbin/stop-dfs.sh  $HADOOP_HOME/sbin/stop-yarn.sh
复制代码


  • 确认服务停止:


  jps # 检查相关进程是否已终止
复制代码


  1. 服务重启流程


  • 重启 Hadoop 集群:


  $HADOOP_HOME/sbin/start-dfs.sh  $HADOOP_HOME/sbin/start-yarn.sh
复制代码


  • 验证服务状态:


  hdfs dfsadmin -report  yarn node -list
复制代码


  1. 注意事项


  • 建议按顺序执行停止和启动操作

  • 每次修改配置后需要重启相关服务

  • 可通过日志文件排查问题:

  • Hadoop 日志目录:$HADOOP_HOME/logs

  • Flink 日志目录:$FLINK_HOME/log


注:具体路径和参数值需根据实际环境调整。对于生产环境,建议先在测试环境验证配置变更。


我这里使用之前的 rsync-script 工具进行同步了:



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


停止 Hadoop

cd /opt/servers/hadoop-2.9.2/sbinstop-all.sh
复制代码

h121

停止 YARN 集群

h123

h123 节点执行(ResourceManager 节点在这里):


停止 Flink

h121 节点执行:


./stop-cluster.sh
复制代码


停止结果

h121

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


h122

h123

启动 Hadoop 集群

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

h121

start-all.sh
复制代码


h122

h123

启动 YARN 集群

h123

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


start-yarn.sh
复制代码


申请资源

查看帮助

cd /opt/servers/flink-1.11.1/bin/./yarn-session.sh -h
复制代码


可以看到该脚本的说明如下:


测试脚本 1 申请资源

./yarn-session.sh -n 2 -tm 800 -s 1 -d
复制代码


上面的脚本的含义是:


  • -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 执行结果

可以看到一些日志内容:


2024-07-24 16:34:33,236 WARN  org.apache.flink.yarn.configuration.YarnLogConfigUtil        [] - The configuration directory ('/opt/servers/flink-1.11.1/conf') already contains a LOG4J config file.If you want to use logback, then please delete or rename the log configuration file.2024-07-24 16:34:33,381 INFO  org.apache.hadoop.yarn.client.RMProxy                        [] - Connecting to ResourceManager at h123.wzk.icu/124.223.26.81:80322024-07-24 16:34:33,724 INFO  org.apache.flink.runtime.util.config.memory.ProcessMemoryUtils [] - The derived from fraction jvm overhead memory (160.000mb (167772162 bytes)) is less than its min value 192.000mb (201326592 bytes), min value will be used instead2024-07-24 16:34:33,734 INFO  org.apache.flink.runtime.util.config.memory.ProcessMemoryUtils [] - The derived from fraction jvm overhead memory (172.800mb (181193935 bytes)) is less than its min value 192.000mb (201326592 bytes), min value will be used instead2024-07-24 16:34:34,210 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - The configured JobManager memory is 1600 MB. YARN will allocate 2048 MB to make up an integer multiple of its minimum allocation memory (1024 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 448 MB may not be used by Flink.2024-07-24 16:34:34,211 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - The configured TaskManager memory is 1728 MB. YARN will allocate 2048 MB to make up an integer multiple of its minimum allocation memory (1024 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 320 MB may not be used by Flink.
复制代码


运行过程如下图所示:


测试脚本 2 提交运行

我们也可以直接在 YARN 上提交运行 Flink 作业(Run a Flink job on YARN)


./flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 /opt/wzk//WordCount.jar
复制代码


上述参数的一些解释:


  • -m JobManager 的地址

  • -yn TaskManager 的个数


停止 yarn-cluster


yarn application -kill application_xxxxxxxxx
复制代码

脚本 2 解释


发布于: 刚刚阅读数: 2
用户头像

武子康

关注

永远好奇 无限进步 2019-04-14 加入

Hi, I'm Zikang,好奇心驱动的探索者 | INTJ / INFJ 我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。 坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。

评论

发布
暂无评论
大数据-111 Flink 安装部署 On YARN 部署全流程详解:环境变量、配置与资源申请_Java_武子康_InfoQ写作社区