flink 的 yarn-session 命令说明
为什么写这一个说明呢?因为网上关于yarn-session命令都是错误的,导致集群无法启动,或者命令行参数不生效。
1. 网上常见命令
1 | bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 -d |
这个命令会启动一个flink
的yarn-session
集群,但是后面的参数都不生效(flink-1.15及以上, 本人只查看这个版本以后的代码。其它版本能否使用不清楚)。
这个原因是:flink
的FlinkYarnSessionCli
中对与未知参数的处理使用stopAtNonOptions=true
的选项,导致后面的参数都失效, 而不会抛出Unrecognized option:
异常。
2. 正确命令
通过bin/yarn-session.sh -h
命令查看参数说明,可以发现这个命令中并没有-n这个参数,见下图。
1 | Usage: |
从上面输出的使用参数说明中,可以发现,-n
参数已经不存在。 而且所有的参数都是可选参数, 这里对参数进行说明:
-at,--applicationType <参数>
:为在YARN上运行的应用程序设置一个自定义的应用程序类型。这有助于分类和监控。-D <属性=值>
:为Flink作业或YARN环境设置配置属性。可以通过多次使用此标志来设置多个属性。-d,--detached
:如果使用此标志,作业将以分离模式运行,即提交作业后命令提示符会立即返回,而不是等待作业完成。-h,--help
:显示YARN会话CLI的帮助信息,如果您忘记了语法或需要了解可用选项的更多信息,这非常有用。-id,--applicationId <参数>
:使用提供的应用程序ID附加到正在运行的YARN会话。当您希望与已经运行的应用程序交互时,这很有用。-j,--jar <参数>
:指定包含要执行作业的Flink jar文件的路径。-jm,--jobManagerMemory <参数>
:设置分配给JobManager容器的内存量,可选单位(例如MB、GB)。默认单位是MB。-m,--jobmanager <参数>
:通过将参数设置为yarn-cluster
来指示Flink使用YARN执行模式。-nl,--nodeLabel <参数>
:为应用程序指定YARN节点标签,这可以帮助基于节点标签进行资源分配。-nm,--name <参数>
:为YARN上的应用程序设置自定义名称,这可以使在YARN ResourceManager UI中识别应用程序变得更加容易。-q,--query
:显示YARN集群上的可用资源,如内存和CPU核心数,这对于计划资源分配非常有用。-qu,--queue <参数>
:指定应提交应用程序的YARN队列。队列用于跨不同团队或项目管理资源分配。-s,--slots <参数>
:确定每个TaskManager的槽位数量。槽位表示可以由TaskManager同时执行的并行任务。-t,--ship <参数>
:在启动作业之前,从本地文件系统将文件传输到YARN集群节点。这对于传输作业运行时可能需要的额外文件非常有用。-tm,--taskManagerMemory <参数>
:设置分配给每个TaskManager容器的内存量,可选单位(例如MB、GB)。默认单位是MB。-yd,--yarndetached
:类似于-d
或--detached
标志,但已废弃,建议使用非YARN特定的选项。-z,--zookeeperNamespace <参数>
:指定用于高可用性(HA)模式的ZooKeeper子路径创建的命名空间。仅在使用ZooKeeper进行HA配置时需要。
所以yarn-session.sh命令常用格式如下:
1 | ./bin/yarn-session.sh -nm "mySession" -jm 1024 -tm 2048 -s 2 -d |
此命令告诉YARN启动一个具有1GB内存的JobManager、每个TaskManager有2GB内存和两个槽位的Flink集群,所有这些都在名为“mySession”的应用程序下。
至此,了解到为什么yarn-session.sh命令参数不生效的原因; 建议flink将stopAtNonOptions=true
改为stopAtNonOptions=false
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 许灵的技术笔记!
评论