点一下关注吧!!!非常感谢!!持续更新!!!
🚀 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/profile
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
配置的结果如下图所示:
退出保存,并刷新环境变量。
yarn-site
cd /opt/servers/hadoop-2.9.2/etc/hadoop
vim 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 节点 这三台机器上,都配置好一样的内容。 以下是扩展后的详细配置说明:
- Flink环境配置
- 需要配置flink-conf.yaml文件中的参数,包括:
- jobmanager.rpc.address: 主节点IP
- taskmanager.numberOfTaskSlots: 根据机器资源设置
- parallelism.default: 默认并行度
- 配置masters和workers文件,指定集群节点
- 环境变量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使配置生效
- yarn-site.xml配置
- 关键参数包括:
- yarn.resourcemanager.hostname: RM主机名
- yarn.nodemanager.aux-services: mapreduce_shuffle
- yarn.nodemanager.resource.memory-mb: 节点可用内存
- yarn.scheduler.maximum-allocation-mb: 单任务最大内存
- 服务停止流程
- 停止Flink服务:
$FLINK_HOME/bin/stop-cluster.sh
- 停止Hadoop集群:
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
- 确认服务停止:
jps # 检查相关进程是否已终止
- 服务重启流程
- 重启Hadoop集群:
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
- 验证服务状态:
hdfs dfsadmin -report
yarn node -list
- 注意事项
- 建议按顺序执行停止和启动操作
- 每次修改配置后需要重启相关服务
- 可通过日志文件排查问题:
- Hadoop日志目录:$HADOOP_HOME/logs
- Flink日志目录:$FLINK_HOME/log
注:具体路径和参数值需根据实际环境调整。对于生产环境,建议先在测试环境验证配置变更。
我这里使用之前的 rsync-script 工具进行同步了:
漫长的等待之后,可以看到已经传输完毕了:
停止Hadoop
cd /opt/servers/hadoop-2.9.2/sbin
stop-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:8032
2024-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 instead
2024-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 instead
2024-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