FLINK ON YARN 3种部署方式:
在生产中建议使用 Per-job 或 Application Mode 模式部署 Flink 应用程序,这些模式为应用程序提供了更好的隔离.
一个任务启动一个Flink集群, 各个 Flink 集群之间独立运行, 互不影响, 而且每个集群可以单独进行配置。
1、Application Mode (应用模式)
特点
每次递交作业都需要申请一次资源
优点
- main 方法在集群中执行, 不是执行在客户端
- 运行时所需的依赖项, 并生成 JobGraph 都在Yarn集群中执行, 有效减少客户端带宽、性能的消耗, 从而防止客户端压力过大
- 允许应用程序包含多个Job, 多个Job顺序执行
使用
该模式将在 YARN 上启动 Flink 集群,其中应用程序 jar 的 main() 方法在 YARN 中的 JobManager 上执行, 应用程序完成后,集群将立即关闭。
常用的启动命令, 启动后会得到一个 applicatid
./bin/flink run-application
-t yarn-application
-yjm 1024
-ytm 1024
-d
-c org.apache.flink.streaming.examples.socket.SocketWindowWordCount
examples/streaming/SocketWindowWordCount.jar
–port 9000
列出运行在集群中的任务(通过 -Dyarn.application.id 可以查看指定 application.id 中执行的 Job)
./bin/flink list
-t yarn-application
-Dyarn.application.id=application_XXXX_YY
取消job
./bin/flink cancel
-t yarn-application
-Dyarn.application.id=application_XXXX_YY
优化 为了让整个应用得到更快的响应,我们可以把 jar 等文件上传到指定的 HDFS 路径,这样应用在执行的时候可以直接从指定的路径获取,而不是从 client 上传。
./bin/flink run-application -t yarn-application
-Dyarn.provided.lib.dirs=“hdfs://myhdfs/my-remote-flink-dist-dir”
hdfs://myhdfs/jars/my-application.jar
2、Per-Mode (Job 分离模式)
特点
每次递交作业都需要申请一次资源
优点
- 作业运行完成, 资源会立刻被释放, 不会一直占用系统资源
- 每个作业都是一个Flink集群, 不同资源之间做到了很好的资源隔离, 且不同的作业可以进行单独的配置
缺点
- 每次递交作业都需要申请资源, 会影响执行效率, 因为申请资源需要消耗时间
- main 方法在客户端执行, 在客户端提交给 JobManager
应用场景
适合作业比较少的场景、大作业的场景
启动命令
./bin/flink run
-t yarn-per-job
-yjm 1024
-ytm 1024
-d
-c org.apache.flink.streaming.examples.socket.SocketWindowWordCount
examples/streaming/SocketWindowWordCount.jar
–port 9000
3、Session Mode(会话模式)
特点
所有作业共享集群资源
优点
根据指定的资源参数初始化一个Flink集群,资源只需要一次申请
缺点
- 隔离性差, JM 负载瓶颈
- main 方法在客户端执行
应用场景
对延迟非常敏感但运行时长较短的作业
会话模式有两种操作模式
attached mode(默认)
yarn-session.sh 客户端将 Flink 集群提交给 YARN, 但客户端一直在运行, 不会退出
如果集群失败, 客户端将显示错误; 如果客户端被终止, 它也会发出集群关闭的信号
detached mode (-d or --detached)
yarn-session.sh 客户端将 Flink 集群提交给 YARN,然后客户端返回并退出
需要再次调用客户端或 YARN 工具来停止 Flink 集群
启动命令
./bin/yarn-session.sh
-yjm 1024
-ytm 1024
-d
版权归原作者 sunxunyong 所有, 如有侵权,请联系我们删除。