Flink on yarn
使用Yarn统一管理资源的好处
-
1)、Yarn的资源可以按需使用,提高集群的资源利用率
-
2)、Yarn的任务有优先级,根据优先级运行作业
-
3)、基于Yarn调度系统,能够自动化地处理各个角色的 Failover(容错)
yarn当中 jobManger 宕机挂掉了之后, appmaster会重新跟RM申请资源 去运行,间接的实现了高可用
Flink on yarn(重要)
Flink on yarn 主要是两步:
-
Flink cluster中的集群角色 运行在yarn的容器内
JM TM 运行在yarn -container容器中 -
客户端提交job 给 jobManager去运行
image.png
JobManager分配资源给 TaskManger去运行task任务 -
JobManager 进程和 TaskManager 进程都由 Yarn NodeManager 监控
特点am 和 jm 运行在同一个 container容器内 是一个进程 -
如果 JobManager 进程异常退出,则 Yarn ResourceManager 会重新调度 JobManager到其他机器;
-
如果 TaskManager 进程异常退出,JobManager 会收到消息并重新向 Yarn ResourceManager 申请资源,重新启动 TaskManager;
Flink on yarn 流程
image.pngimage.png
1.客户端上传jar 包和conf配置文件到HDFS上(当资源满足时,才会上传)
2.客户端提交应用给RM.RM收到请求后,到对应NM上分配一个container容器,启动AppMaster
3.Appmaster到HDFS上读取对应的jar包和配置文件,在当前容器内构建JobManager运行环境,启动JobManager
4.启动后AM/JM不会立即向RM申请资源,当需要资源时 AM/JM向RM申请资源,
当申请到资源后,分配容器到HDFS上下载jar包和配置文件构建TaskManager运行环境,运行TM进程
-- 客户端提交job给 JobManager
Flin on yarn 运行job作业 的三种部署模式
[flink-1.11版本之前:2种,flink-1.11版本开始:3种]
-
seesion 会话共享
在yarn集群上启动一个flink cluster ,运行多个job
所有作业Job共享1个集群资源,隔离性差,JM 负载瓶颈,每个Job中main 方法在客户端执行 -
per - job独享模式
在yarn 集群启动多个 Flink cluster,每个Flink cluster 只运行一个job
每个作业单独启动1个集群,隔离性好,JM 负载均衡,Job作业main 方法在客户端执行。 -
application 应用模式
相当于per-job的升级版 ,启动一个flink clsuter,只运行1个job作业
但是main函数运行在Job Manager内
不同点:
seesion和per-job main方法都是在客户端上执行的,
- 会导致服务器压力大,提交的操作都会在实时平台所在的机器上执行
- 会导致大量的网络io开销,在执行时 会把本地flink的jar包上传到hdfs临时文件中
1_seesion 会话共享
image.png所有作业Job共享1个集群资源,隔离性差,JM 负载瓶颈,每个Job中main 方法在客户端执行。
2_per - job独享模式
image.png每个作业单独启动1个集群,隔离性好,JM 负载均衡,Job作业main 方法在客户端执行。
3_application 应用模式
image.pngmain方法运行在rm中