文章简介

在 YARN 模式下部署 Flink 需要完成一系列环境配置和集群管理操作。首先,在各节点配置环境变量,包括 HADOOP_CONF_DIR、YARN_CONF_DIR 和 HADOOP_CLASSPATH,并在 profile 中加入 Hadoop 与 Flink 的路径。随后修改 yarn-site.xml,指定 ResourceManager 地址,并关闭虚拟内存与物理内存检测以避免资源限制问题。集群中每台节点(h121、h122、h123)需保持配置一致,可通过 rsync 工具同步。


1. 环境变量配置

vim /etc/profile
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`

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


2. yarn-site.xml 配置

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>

3. 同步配置

需要在 h121、h122、h123 三台机器上配置相同的内容,可通过 rsync 工具同步。


4. 服务停止流程

停止Hadoop集群

cd /opt/servers/hadoop-2.9.2/sbin
stop-all.sh

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

start-yarn.sh

停止Flink(在h121节点执行):

./stop-cluster.sh

5. 服务启动流程

启动Hadoop集群

start-all.sh

启动YARN集群(在h123节点执行):

start-yarn.sh

6. 申请资源

查看帮助

cd /opt/servers/flink-1.11.1/bin/
./yarn-session.sh -h

申请资源命令

./yarn-session.sh -n 2 -tm 800 -s 1 -d

参数说明:

  • -n: 申请2个容器(TaskManager数量)
  • -s: 每个TaskManager的Slots数量
  • -tm: 每个TaskManager的内存大小
  • -d: 后台方式运行

提交Flink作业

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

参数说明:

  • -m: JobManager的地址
  • -yn: TaskManager的个数
  • -yjm: JobManager内存
  • -ytm: TaskManager内存

停止yarn-cluster

yarn application -kill application_xxxxxxxxx

7. yarn-session 模式说明

使用 yarn-session 会启动两个必要服务 JobManager 和 TaskManager,客户端通过 Flink run 提交作业。yarn-session 会一直启动,持续接收客户端提交的作业。这种方式创建的 Flink 集群会独占资源,如果有大量作业较小、工作时间短,适合使用这种方式,减少资源创建的时间。