文章概述

本文详细介绍了在 YARN 模式下部署 Flink 的完整流程,包括环境变量配置、yarn-site.xml 配置、资源申请和任务提交等。

环境变量配置

/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.xml 配置

需要添加以下关键配置:

<!-- YARN 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 三台节点上保持配置一致,可使用 rsync 工具同步。

服务管理

停止服务

# 停止 Hadoop
cd /opt/servers/hadoop-2.9.2/sbin
stop-all.sh

# 停止 YARN(h123 节点执行)
start-yarn.sh

# 停止 Flink(h121 节点执行)
./stop-cluster.sh

启动服务

# 启动 Hadoop(h121 节点)
start-all.sh

# 启动 YARN(h123 节点)
start-yarn.sh

申请资源

yarn-session.sh 用法

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

参数说明:

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

注意:即使写 -n 2,实际会申请 3 个 Container,因为 ApplicationMaster 和 JobManager 占用一个额外容器。

提交运行

方式一:会话模式

先申请资源,再提交任务:

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

方式二:直接提交

./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

配置要点总结

配置项说明
HADOOP_CONF_DIRHadoop 配置目录
YARN_CONF_DIRYARN 配置目录
HADOOP_CLASSPATHHadoop 类路径
yarn.nodemanager.pmem-check-enabled关闭物理内存检查
yarn.nodemanager.vmem-check-enabled关闭虚拟内存检查
yarn.resourcemanager.addressResourceManager 地址

文章通过详细的步骤演示了 Flink on YARN 的完整部署流程,包括环境准备、配置修改、服务启停和资源申请等关键环节。