网站建设案例精粹,做3d打印网站,深圳坪山网站制作公司,济南网站建设策划方案文章目录
Flink 任务提交模式
一、会话模式#xff08;Session Mode#xff09;
二、单作业模式#xff08;Per-Job Mode#xff09;
三、应用模式#xff08;Application Mode#xff09; Flink 任务提交模式
Flink分布式计算框架可以基于多种模式部署#xff0c;…
文章目录
Flink 任务提交模式
一、会话模式Session Mode
二、单作业模式Per-Job Mode
三、应用模式Application Mode Flink 任务提交模式
Flink分布式计算框架可以基于多种模式部署每种部署模式下提交任务都有相应的资源管理方式例如Flink可以基于Standalone部署模式、基于Yarn部署模式、基于Kubernetes部署模式运行任务以上不同的集群部署模式下提交Flink任务会涉及申请资源、各角色交互过程不同模式申请资源涉及到的角色对象大体相同下面我们以Flink运行时架构流程为例来总体了解下Flink任务提交后涉及到对象交互流程以便后续学习不同任务提交模式下任务提交流程。 上图是Flink运行时架构流程涉及集群启动、任务提交、资源申请分配整个流程大体步骤如下
启动Flink集群首先会启动JobManagerStandalone集群模式下同时启动TaskManager该模式资源也就固定其他集群部署模式会根据提交任务来动态启动TaskManager当在客户端提交任务后客户端会将任务转换成JobGraph提交给JobManagerJobManager首先启动Dispatcher用于分发作业运行Flink WebUI提供作业执行信息Dispatcher启动后会启动JobMaster并将JobGraph提交给JobMasterJobMaster会将JobGraph转换成可执行的ExecutionGraph。JobMaster向对应的资源管理器ResourceManager为当前任务申请Slot资源在Standalone资源管理器中会直接找到启动的TaskManager来申请Slot资源如果资源不足那么任务执行失败其他资源管理器会启动新的TaskManager新启动的TaskManager会向ResourceManager进行注册资源然后ResourceManager再向TaskManager申请Slot资源如果资源不足会启动新的TaskManager来满足资源TaskManager为对应的JobMaster offer Slot资源JobMaster将要执行的task发送到对应的TaskManager上执行TaskManager之间可以进行数据交换。以上就是Flink任务提交的整体流程信息在Flink中任务提交还有多种模式不同的Flink集群部署模式支持的任务提交模式不同对应的任务执行流程略有不同向Flink集群中提交任务有三种任务部署模式分别如下
会话模式 - Session Mode单作业模式 - Per-Job Mode(过时)应用模式 - Application Mode
以上三种任务提交模式的主要区别在于Flink集群的生命周期不同、资源的分配方式不同以及Flink 应用程序的main方法执行位置Client客户端/JobManager不同。
下面分别进行介绍 一、会话模式Session Mode
Session模式下我们首先会启动一个集群保持一个会话这个会话中通过客户端提交作业集群启动时所有的资源都已经确定所以所有的提交的作业会竞争集群中的资源。这种模式适合单个作业规模小、执行时间短的大量作业。 优势只需要一个集群所有作业提交之后都运行在这一个集群中所有任务共享集群资源每个任务执行完成后就释放资源。
缺点因为集群资源是共享的所以资源不够了提交新的作业就会失败如果一个作业发生故障导致TaskManager宕机那么所有的作业都会受到影响。 二、单作业模式Per-Job Mode
为了更好的隔离资源Per-job模式是每提交一个作业会启动一个集群集群只为这个作业而生这种模式下客户端运行应用程序然后启动集群作业被提交给JobManager进而分发给TaskManager执行作业执行完成之后集群就会关闭所有资源也会释放。 优势这种模式下每个作业都有自己的JobManager管理独享当下这个集群的资源就算作业发生故障对应的TaskManager宕机也不影响其他作业。如果一个Application有多个job组成那么每个job都有自己独立的集群。
缺点每个作业都在客户端向集群JobManager提交如果一个时间点大量提交Flink作业会造成客户端占用大量的网络带宽会加重客户端所在节点的资源消耗。
注意Per-Job 模式目前只有yarn支持Per-job模式在Flink1.15中已经被弃用后续版本可能会完全剔除替代的是Application模式主要原因就是Application模式把main方法的初始化放到了集群组件的JobManager中这样对于客户端来说从性能上有很大优化。 三、应用模式Application Mode
Session 模式和Pre-Job模式都是在客户端将作业提交给JobManager这种方式需要占用大量的网络带宽下载依赖关系并将二进制包发送给JobManager,此外我们往往提交多个Flink 作业都是在同一个客户端节点这样更加剧了客户端所在节点的资源消耗为了降低客户端这种资源消耗我们可以使用Application Mode。
Application模式与Per-job类似只是不需要客户端每个Application提交之后就会启动一个JobManager也就是创建一个集群这个JobManager只为执行这一个Flink Application而存在Application中的多个job都会共用该集群Application执行结束之后JobManager也就关闭了。这种模式下一个Application会动态创建自己的专属集群JobManager,所有任务共享该集群,不同Application之间是完全隔离的在生产环境中建议使用Application模式提交任务。 以上三种Flink任务部署方式生产环境中优先选择Application模式三者区别总结如下
Session 模式是先有Flink集群后再提交任务任务在客户端提交运行提交的多个作业共享Flink集群Per-Job模式和Application模式都是提交Flink任务后创建集群Per-Job模式通过客户端提交Flink任务每个Flink任务对应一个Flink集群每个任务有很好的资源隔离性Application模式是在JobManager上执行main方法为每个Flink的Application创建一个Flink集群如果该Application有多个任务这些Flink任务共享一个集群。
Flink不同的集群部署模式支持不同的任务提交方式后续会重点介绍Standalone资源管理和Yarn资源管理任务提交模式的支持。 博客主页https://lansonli.blog.csdn.net欢迎点赞 收藏 ⭐留言 如有错误敬请指正本文由 Lansonli 原创首发于 CSDN博客停下休息的时候不要忘了别人还在奔跑希望大家抓紧时间学习全力奔赴更美好的生活✨