flink.5 在yarn上运行


文章写的比较急,但是都是干货。

摘要

在读下面的文章之前你需要了解:flink三种调度
环境变量要加上:export HADOOP_CLASSPATH=`hadoop classpath`
在这里插入图片描述

一:Session Mode 运行任务

Session Mode运行jar有两个过程,

  • 一是在yarn建立一个flink集群.
  • 二:集群建立成功之后,提交任务.
1.1Session Mode 建立一个flink集群 有两种模式:
  • 附加模式attached mode (default):
    client提交任务到flink-cluster上,之后客户端会继续运 行,并且会追踪集群状态.如果集群失败,则客户端会显示错误信息,如果客户端关闭,也会向flink-cluster发送关闭的信号,关闭集群.
    下面实战一下,下面的操作假定你已经拥有了hadoop以及flink:
   #进入flink安装目录
     cd  /home/penggan/flink/flink-1.13.0
      #在 yarn上建立flink-cluster
    ./bin/yarn-session.sh

在这里插入图片描述

注意图片上的红色标注,从上往下,第一个箭头指定的是yarn显示的flink-cluster的 id,第二个箭头指的是flink-cluster的web页面,下面分别是hadoop 的页面和flink-cluster的web页面:
在这里插入图片描述
在这里插入图片描述

接下来按住:ctrl+c 停止控制台会发现,hadoop页面中的application 已经被干掉,并且flink-cluster也会停止,这就是附加模式,通过上面的操作可以知道附加模式就是启动flink-cluster的客户端的生命周期和生成的flink-cluster生命周期是一致的,这里有个注意的地方,在这种模式下,客户端的停止会导致整个clink-cluster的application任务停止,因此这种模式不推荐生产使用.当然测试很方便

  • 静默模式detached mode
    也即后台运行的模式,客户端将建立命令提交之后就会返回,yarn上的flink-cluster会在后台存活.
    下面实战一下:
#启动
./bin/yarn-session.sh --detached

结果看下图,注意对比附加模式启动成功图片.
在这里插入图片描述
对比图片发现,后台启动的方式控制台输出了有意思的东西,值得主义的是下面这些输出:

2021-08-05 16:31:16,966 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                [] - The Flink YARN session cluster has been started in detached mode. In order to stop Flink gracefully, use the following command:
$ echo "stop" | ./bin/yarn-session.sh -id application_1625201070945_0101
If this should not be possible, then you can also kill Flink via YARN's web interface or via:
$ yarn application -kill application_1625201070945_0101
Note that killing Flink might not clean up all job artifacts and temporary files.

意思就是说,后台模式,如果你想关闭flink-cluster集群最好用:echo “stop” | ./bin/yarn-session.sh -id application_xxx
如果没关掉可以用:yarn application -kill application_xxx
但是第二种方式可能会导致一些文件清理不干净,所以还是推荐第一种关闭方式.
*

1.2 Session Mode 运行一个任务
./bin/flink run  -Dyarn.application.id=application_1625201070945_0103  ./examples/streaming/TopSpeedWindowing.jar

application_id 就是flink-cluster的id,意思是,这个jar包在指定的id的flink-cluster上运行,因为yarn上可以运行多个flink-cluster.
下面是运行打印的日志图片:
在这里插入图片描述
可以看到jar包启动之后控制台会返回一个jobID,这就是当前任务的id,注意区别application_id, application_id 是flink-cluster的id, flink-cluster运行在hadoop上, job运行在flink-cluster上.
停止集群如下:

1. echo "stop" | ./bin/yarn-session.sh -id application_xxxx

2. /bin/yarn-session.sh -id application_XXXX_YY 的话会从新将后台模式转成前台模式,此时如果你键盘:ctrl+c的话
也会杀掉集群

或者:

./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_xxx  jobId
注意:这种方式只会杀死任务,不会杀死flink-cluster集群,这一点要区别Per-Job Mode 模式.

二: Per-Job Mode运行任务

每作业集群模式将在YARN上启动一个Flink集群,然后在本地运行提供的应用程序jar,最后将JobGraph提交给YARN上的JobManager。如果传递"–detached"参数,客户端将在提交任务完成后会停止.且 The YARN cluster will stop once the job has stopped.

2.1 Per-Job Mode 启动任务
./bin/flink run -t yarn-per-job --detached ./examples/streaming/TopSpeedWindowing.jar

在这里插入图片描述
上面的箭头,第一个是clink-cluster在yarn上的id,第二个是job的id.

2.2:Per-Job Mode停止任务
echo "stop" | ./bin/yarn-session.sh -id application_xxx

或者

./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_xxx   jobId
这种方式

Per-Job Mode 模式下flink-cluster集群的生命周期和job的生命周期是同步的,曲线job的时候flink-cluster也会结束掉. 多说一句这种模式只能运行一个job.

3:Application Mode 运行任务

3.1 运行
./bin/flink run-application -t yarn-application ./examples/streaming/TopSpeedWindowing.jar
3.2停止运行
echo "stop" | ./bin/yarn-session.sh -id application_1625201070945_0115
或者:
./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
# Cancel running job
./bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
[2023-07-04 17:11:29.952]Exception when trying to cleanup container container_e10_1661450914423_18596_01_000003: java.io.IOException: Problem signalling container 97181 with SIGTERM; output: null and exitCode: -1 at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.signalContainer(LinuxContainerExecutor.java:750) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.sendSignal(ContainerLaunch.java:908) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.signalProcess(ContainerLaunch.java:922) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.cleanupContainer(ContainerLaunch.java:774) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher.handle(ContainersLauncher.java:173) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher.handle(ContainersLauncher.java:62) at org.apache.hadoop.yarn.event.AsyncDispatcher.dispatch(AsyncDispatcher.java:221) at org.apache.hadoop.yarn.event.AsyncDispatcher$1.run(AsyncDispatcher.java:143) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.hadoop.yarn.server.nodemanager.containermanager.runtime.ContainerExecutionException: Signal container failed at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.DefaultLinuxContainerRuntime.signalContainer(DefaultLinuxContainerRuntime.java:163) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.DelegatingLinuxContainerRuntime.signalContainer(DelegatingLinuxContainerRuntime.java:159) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.signalContainer(LinuxContainerExecutor.java:739) ... 8 more | org.apache.flink.yarn.YarnResourceManager (ResourceManager.java:822)
07-12

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我先森

鼓励一个吧,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值