Flink的部署模式

Flink的部署模式

大家好我是栗子鑫,今天主要想给大家介绍一下在面对不同的运行环境和任务需求的时候应该以哪种方式部署我们的Flink程序,希望对大家有所帮助,正文如下:

部署模式主要按照程序的生命周期和资源隔离来划分:

1.生命周期:是指整个程序的Runtime是否随着job的结束而结束。

2.资源隔离:多个任务共享一个JobManger还是每一个任务有自己特有的JobManger

其实这两个条件可以理解为程序的主函数的main方法是在本地的client上面执行还是在jobManger上面执行:

1.在本地client执行:由client来生成的jobgraph,并且上传到jobManger上。

2.在jobManger上面:application mode 整个程序的main函数在集群上运行,代码资源也放在集群里。



01


会话模式标题内容1



第一部分的正文内容从这里开始。


会话模式是为最常规的模式,在会话模式中整个Flink的集群中只有一个JobManer(JM),所有的任务都是先由对应的客户端进行解析生成JobGraph,然后将所需要的Jar一并打包,提交到了JM上。可以理解为JM一直在运行中,任务提交后开始执行,具体示意图如下(本博客所有的来源:资源管理器支持和高可用[1]

Flink的部署模式

会话模式的运行特点:

  1. 所有的JobManger 和 taskManger 共享
  2. JobManger的生命周期不受提交的Job影响,会一直运行。
  3. JobGraph 需要在客户端生成然后提交到JM上

会话模式的优缺点:

优点:

  1. JM和所有的TM都是共享的,所以资源会重复利用。
  2. Job 的管理是在 session 集群之中的,运维相对来说不是在resource management,所以更简单一些

缺点:所有的资源共享,资源的隔离相对差一些。



02


Per-Job模式



Per-Job模式顾名思义就是针对每一个Job都会临时创建一个JM,然后启动对于的TM和生成对应的运行图。具体模式如下:

Flink的部署模式

Per-Jon模式的运行特点

  1. 单个Job独有JobManger 和 taskManger 。
  2. TM中的slot数量等资源由Job决定。
  3. JobGraph 需要在客户端生成然后提交到JM上。
  4. TM的生命周期和Job的生命周期一样。

Per-Jon模式的优缺点:

优点:

  1. 每个任务都有自己JM和TM,所以隔离行比较好。
  2. 隔离行好,那么对于每个 job 的灵活度就更高,比如其中的 taskManager 之中的 slot 个数就可以随着 job 本身来进行定义。

缺点:

  1. JobManager 本身也需要消耗资源,为每一个 job 单独启动一个 JobManager,会存在资源浪费。
  2. 彼此隔离,各个资源的调度就只能将管理交给 Cluster Management。管理难。



03


应用模式



会话模式 和 per-job 模式下面,都是先将对应的 jar 在 client 进行解析,然后提交到 JobManager 上面。生成 JobGraph 的过程很消耗 CPU 资源,而且在多个 JAR 进行排队提交的时候,有可能会造成阻塞。在Aplication mode 下面,客户端 只是负责命令和接收结果,从解析过程开始之后就是放在 JM 上面运行。可以自己去指定划分 application,每一个 application 之中都有很多 job。dependency jar 可以由 jobManager 上传到 文件系统上如HDFS上,运行模式如下:

Flink的部署模式
image-20221113163734511

应用模式的运行特点:

  1. 每个应用都有自己的JM且可以可以运行多个Job。
  2. 客户端无须提交jar到JM中,以及JobGraph生成,只需要负责Job的提交和管理。

应用模式的优缺点:

优点:

  1. 有效的降低了带宽和客户端的负载。
  2. 每个应用实现了资源隔离,但同一个应用中实现了资源共享。

缺点:支持的环境比较少,如YARN和K8S



04


总结



本文主要简短的介绍了Flink的几种运行模式,并且分析了每一种的模式的的优缺点,至于现实场景使用哪种模式,需要结合特定的场景以及自身的资源来使用,希望对大家有所帮助。作为拓展,大家有兴趣可以看看这篇文章Flink部署模式解析[2]

参考资料

[1]

资源管理器支持和高可用: https://timzhouyes.github.io/2021/04/14/Flink-%E9%83%A8%E7%BD%B2%E6%A8%A1%E5%BC%8F%E5%89%96%E6%9E%90/

[2]

Flink部署模式解析: https://timzhouyes.github.io/2021/04/14/Flink-%E9%83%A8%E7%BD%B2%E6%A8%A1%E5%BC%8F%E5%89%96%E6%9E%90/

关注六只栗子,面试不迷路~

作者    栗子鑫

编辑   一口栗子  


Flink的部署模式

Flink的部署模式

Flink的部署模式

Flink的部署模式


原文始发于微信公众号(六只栗子):Flink的部署模式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88220.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!