根据Main方法运行在Client还是JobManager分为三种类型
Session Mode
- 共享JobManager和TaskManager ,所有Job都在一个Runtime中运行
Per-job Mode
- 独享JobManager和TaskManager,好比每个Job单独启动一个Runtime
Application Mode (1.11版本)
-
main运行在Cluster上,而不在客户端,每个Application对应一个Runtime,Application可以包含多个Job
-
JobManager的生命周期不受Job影响
-
Deployer需要上传依赖的 Jar包
-
Deployer需要生成JobGraph
Session Mode
优点:资源充分共享,资源利用率高,Job在集群中管理,运维简单
缺点:资源隔离差、非Native类型部署,TM不易扩展,Slot计算资源伸缩性较差
image.jpegPer-job mode
-
TaskManager中的slot资源根据Job指定
-
JobManager的生命周期和Job生命周期绑定
-
Deployer需要上传依赖的 Jar包
-
Deployer需要生成JobGraph
优点:Job之间资源隔离充分、Slot数量可以不同
缺点:资源相对比较浪费,Job管理完全交给ClusterManagement,管理复杂
image.jpegPer Job 和Session模式都需要上传Jar消耗带宽
生成JobGraph需要消耗CPU资源,任务多的情况下客户端压力大
Application Mode集群运行模式:
-
每个Application 对应一个Jobmanager,且可以运行多个Job
-
客户端无需将Jar包上传到JobManager,仅负责管理Job的提交与管理
-
main方法运行JobManager中,将JobGraph的生成放到集群上运行
优点:有效降低带宽消耗和客户端负载、Application实现字段隔离、Application中实现资源共享
缺点:功能太新、还未经过生产验证;仅支持Yarn和k8s
image.png
Standalone仅支持Session模式
网友评论