本文主要是介绍Flink实战(十)Flink on Yarn模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 概述
- 模式1 Yarn Per Job
- 实践
- 模式2 Yarn On Session
- 实践
- 参考资料
概述
FLink 如何执行在Yarn上面的呢?
首先我们需要了解到Flink的底层执行流程,然后看哪一步与Yarn进行适配,执行。
Flink底层执行流程:
-
用户通过 DataStream API、DataSet API、SQL 和 Table API 编写 Flink 任务,它会生成一个JobGraph。
-
JobGraph 是由 source、map()、keyBy()/window()/apply() 和 Sink 等算子组成的。
-
当 JobGraph 提交给 Flink 集群后,能够以 Local、Standalone、Yarn 和 Kubernetes 四种模式运行。
那么我们下面主要看一下运行在Yarn的两种模式:
模式1 Yarn Per Job
Flink on Yarn 中的 Per Job 模式是指每次提交一个任务,然后任务运行完成之后资源就会被释放。
- 首先 Client 提交 Yarn App,比如 JobGraph 或者 JARs。
- 接下来 Yarn 的 ResourceManager 会申请第一个 Container。这个 Container 通过 Application Master 启动进程,Application Master 里面运行的是 Flink 程序,即 Flink-Yarn ResourceManager 和 JobManager。
- 最后 Flink-Yarn ResourceManager 向 Yarn ResourceManager 申请资源。当分配到资源后,启动 TaskManager。TaskManager 启动后向 Flink-Yarn ResourceManager 进行注册,注册成功后 JobManager 就会分配具体的任务给 TaskManager 开始执行。
实践
# 默认:{masterMemoryMB=1024, taskManagerMemoryMB=1024,numberTaskManagers=1, slotsPerTaskManager=1}./bin/yarn-session.sh## 启动一个有2个Taskmanager,jobmanager内存1GB,taskManager1GB内存的集群
./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024## 后台模式
./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 -d
然后在看输出日志里面
Flink JobManager is now running on flinkhadoop:43434 with leader id 00000000-0000-0000-0000-000000000000.
JobManager Web Interface: http://flinkhadoop:43434
本地调试的时候,直接把对应的执行信息改变即可!
final Stream
这篇关于Flink实战(十)Flink on Yarn模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!