flink部署模式

\X001 Flink架构

flink架构图

\X002 flink部署模式

flink部署模式分为3种:

  • application模式
    app的main()运行在jobmanger上。只能运行一个Job,job运行完后jobmanager关闭了。
  • preJob模式
    app的main()运行在client上,可以运行多个Job,AsyncJob不需要等待上一个Job完成,就可以直接开始运行,所有Job完成后,jobmanger就关闭了。
  • session模式
    app的main()运行在client上,jobmanger会一直存在。所有的job共享同一套flink集群实例。

讲到这里,大家会疑问,app的mian()运行在jobmanger和client上有啥区别?其实这个区别还挺大:
我们在main()里面写的逻辑要转化为DAGS图和其他flink-runtime能理解的成分然后发送给jobmanger,然后还需要将我们代码的依赖jar包,通过IO传送到我们的集群的每个节点,才能正常在flink上运行。换句话说,如果main()运行在client上,这些工作是client完成,如果main()运行在jobmanger上,这些工作通过jobmanger完成,而jobmanger身处集群内,而client身处集群外。

总的来说,以上3种部署模式的主要不同点:

  1. 集群的生命周期和资源的隔离
  2. main()运行的位置,是client还是jobmanger
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐