yarn部署模式依赖预上传设置

flink on yarn 将运行所需的依赖包与上传到远程(如:hdfs系统),这将使作业提交变得非常轻量级,因为所需的Flink jar和应用程序jar将由指定的远程获取,而不是由客户端发送到集群。

  1. Application Mode on yarn
./bin/flink run-application \
-t yarn-application \
-Dyarn.application.name="flink-yarn-application" \
-Dtaskmanager.numberOfTaskSlots=5 \
-Djobmanager.memory.process.size=1024m \
-Dtaskmanager.memory.process.size=1024m \
-Drest.flamegraph.enabled=true \
-Dyarn.provided.lib.dirs="hdfs://bdptest/data/flink-1.15.0/lib;hdfs:///data/flink-1.15.0/plugins" \
hdfs:///data/flink-1.15.0/flink-demo01-1.0-SNAPSHOT-pony-shade.jar 

NOTE:

Flink 应用的执行包含两个阶段:

  • pre-flight: 在main()方法调用之后开始,构造job graph。
  • runtime: 一旦用户代码调用 execute() 就会触发该阶段。

只有在application模式main函数所依赖的jar包(flink-dist-jar)才可以放到远程分布式文件系统,因为application模式的main方法在jobmanager执行。
但是对于Session模式和Per-Job模式,main方法在客户端执行。

  1. Per-Job Cluster Mode on yarn
./bin/flink run -t yarn-per-job --detached \
-Dyarn.application.name="flink-yarn-perjob" \
-Dyarn.provided.lib.dirs="hdfs://bdptest/data/flink-1.15.0/lib;hdfs:///data/flink-1.15.0/plugins" \
./examples/streaming/TopSpeedWindowing.jar
  1. Session Mode on yarn
./bin/yarn-session.sh --detached \
-Dyarn.application.name="flink-yarn-session" \
-Dtaskmanager.numberOfTaskSlots=5 \
-Dyarn.provided.lib.dirs="hdfs://bdptest/data/flink-1.15.0/lib;hdfs:///data/flink-1.15.0/plugins" \
-Drest.flamegraph.enabled=true 
./bin/flink run ./examples/streaming/TopSpeedWindowing.jar

【yarn.provided.lib.dirs】参数解释

指定远程依赖包所在的路径,可以是多个路径,使用分号分割。此路径下的依赖包是预先上传的,并且全局可读的。
该种模式的操作使得 flink 作业提交变得很轻量,避免了从本地客户端上传Flink依赖(例如:Flink-dist、lib/、plugins/),以加速作业提交过程。
另外,YARN会将它们缓存到节点上,这样就不需要为每个应用程序每次都下载依赖。这也是社区在 flink-1.11 版本引入新的部署模式的意义所在。

NOTE:
如果自己指定 yarn.provided.lib.dirs,有以下注意事项:

  • 需要将 lib 包和 plugins 包地址用;分开,从上面的例子中也可以看到,将 plugins 包放在 lib 目录下可能会有包冲突错误
  • plugins 包路径地址必须以 plugins 结尾,例如上面例子中的 hdfs:///data/flink-1.15.0/plugins

示例:

hdfs://{namenode_address}/data/flink-1.15.0/lib;hdfs://{namenode_address}/data/flink-1.15.0/plugins;hdfs://{namenode_address}/data/flink-1.15.0/flink-dist

应用说明

  • 如果不指定【yarn.provided.lib.dirs】
    应用程序flink依赖包在nodemanager节点的分布情况:

/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0026/filecache/53/flink-dist-1.15.0.jar
/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0026/container_e31_1655891072415_0026_01_000001/flink-dist-1.15.0.jar

flink-dist-1.15.0.jar是在当前application_1655891072415_0026下面,任务停止,依赖被清除。等下次再次启动flink任务时,再次从client上传到hdfs,然后下发到计算节点指定目录。当前节点上的container的依赖取的是当前applicationId filecache上的超链接,如下:

[root@hadoop05 ~]# find / -name flink-dist-1.15.0.jar
/data/hadoop/yarn/local/filecache/79/flink-dist-1.15.0.jar
/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/filecache/52/flink-dist-1.15.0.jar
/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/container_e31_1655891072415_0048_01_000001/flink-dist-1.15.0.jar
/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/container_e31_1655891072415_0048_01_000002/flink-dist-1.15.0.jar
[root@hadoop05 ~]# ll /data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/container_e31_1655891072415_0048_01_000001/flink-dist-1.15.0.jar
lrwxrwxrwx 1 yarn hadoop 118 Jun 24 12:14 /data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/container_e31_1655891072415_0048_01_000001/flink-dist-1.15.0.jar -> /data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0048/filecache/52/flink-dist-1.15.0.jar
  • 如果不指定【yarn.provided.lib.dirs】
    应用程序flink依赖包在nodemanager节点的分布情况:

/data/hadoop/yarn/local/filecache/79/flink-dist-1.15.0.jar
/data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0046/container_e31_1655891072415_0046_01_000001/lib/flink-dist-1.15.0.jar

flink-dist-1.15.0.jar不是在当前application_1655891072415_0046下面,任务停止,依赖依然存在。等下次再次启动flink任务时,直接复用。当前节点上的container的依赖取的是当前filecache上的超链接,如下:

[root@hadoop05 ~]# ll /data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0047/container_e31_1655891072415_0047_01_000001/lib/flink-dist-1.15.0.jar
lrwxrwxrwx 1 yarn hadoop 63 Jun 24 12:09 /data/hadoop/yarn/local/usercache/root/appcache/application_1655891072415_0047/container_e31_1655891072415_0047_01_000001/lib/flink-dist-1.15.0.jar -> /data/hadoop/yarn/local/filecache/79/flink-dist-1.15.0.jar
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值