开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink的集群模式区别,有何优缺点

Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?

展开
收起
1041407514399703 2023-11-27 17:27:46 453 0
9 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink提供了三种集群部署模式:

    1. Standalone模式是最简单的部署模式,不需要依赖外部组件即可运行,适用于测试环境或小规模的应用场景。
    2. Flink on YARN是Yarn资源管理器上的部署模式,可以充分利用YARN的优势,实现多租户共享计算资源。
    3. Flink on Kubernetes是Kubernetes容器编排平台上的部署模式,可以更好地利用容器技术的优势进行弹性伸缩和平滑迁移。

    每种模式都有各自的特点和适用场景:
    Standalone模式的优点是可以快速搭建并运行Flink集群,并且不需要额外的资源管理系统;缺点是没有资源隔离,当多个应用共用同一台机器时可能发生资源竞争。另外,当应用数量增加时,集群扩展性和管理复杂度也会提高。
    Flink on YARN的优点是提供了强大的资源管理和隔离能力,可以同时运行多个应用,而且可以根据需要动态分配资源;缺点是在安装和维护方面相比Standalone模式更加复杂。
    Flink on Kubernetes的优点是提供了更好的资源管理和容错能力,并且可以无缝集成到现有的Kubernetes生态系统中;缺点是对于Kubernetes有一定的学习成本和技术门槛。
    在实际生产环境中,根据项目需求选择合适的部署模式非常重要。如果项目规模较小,可以选择StandAlone模式;如果项目涉及多个应用共享资源,可以选择Flink on YARN;如果是大规模分布式场景,推荐采用Flink on Kubernetes。

    2023-11-28 13:45:25
    赞同 1 展开评论 打赏
  • Apache Flink提供了三种主要的集群部署模式:Standalone模式、Flink On YARN、Flink On Kubernetes。
    Standalone模式:
    优点:易于配置和快速开始;适合小规模测试环境;
    缺点:无HA(高可用)功能;无法动态扩缩容;资源管理单一;
    适合场景:适合于测试阶段的小规模实验环境;
    Flink On YARN:
    优点:利用YARN集群管理资源;具备一定的HA能力;可通过YARN实现动态扩缩容;
    缺点:依赖于YARN生态;资源管理相对复杂;
    适合场景:已有YARN集群的企业内部开发;
    Flink On Kubernetes:
    优点:利用Kubernetes集群管理资源;可实现自动化运维;具有高度的弹性和扩展性;
    缺点:依赖于Kubernetes生态;需掌握Kubernetes相关技能;
    适合场景:云原生时代下的大规模分布式环境。

    在生产环境中,具体选择哪种模式,需要根据实际业务需求和现有IT环境进行综合考虑。若已有YARN集群,优先推荐使用Flink On YARN;若没有YARN集群但有Kubernetes集群,则推荐使用Flink On Kubernetes;对于规模较小、仅用于试验性质的项目,则可以选择Standalone模式,以降低运维成本。

    2023-11-28 10:39:08
    赞同 展开评论 打赏
  • Apache Flink有三种主要的集群部署模式:Standalone模式、Flink On YARN、Flink On Kubernetes。

    1. Standalone模式:这是Flink最基本的部署模式,它不需要任何外部框架就可以独立工作。在这种模式下,所有的Flink组件(如JobManager、TaskManager等)都在同一台机器上运行。优点是简单易用,缺点是资源利用率低,扩展性差。
    2. Flink On YARN:在这种模式下,Flink可以在YARN集群上运行。优点是可以利用YARN的强大功能,比如自动容错、资源调度等。缺点是需要维护YARN集群,并且不能充分利用容器化技术的优势。
    3. Flink On Kubernetes:在这种模式下,Flink可以在Kubernetes集群上运行。优点是可以利用Kubernetes的强大功能,比如自动扩缩容、弹性伸缩等。并且可以更好地利用容器化技术的优点。缺点是需要维护Kubernetes集群,并且需要一定的专业知识。

    生产环境中如何选择,主要取决于以下几个因素:

    1. 已有的基础设施:如果你已经有了YARN或Kubernetes集群,那么使用Flink On YARN或Flink On Kubernetes会更加方便。
    2. 对资源利用率的需求:如果你需要高效率地利用计算资源,那么Flink On Kubernetes可能是更好的选择,因为它可以更好地利用容器化技术的优点。
    3. 对灵活性的需求:如果你需要灵活地控制和调整Flink集群的规模,那么Flink On Kubernetes可能是更好的选择,因为它可以自动扩缩容和弹性伸缩。

    image.png

    2023-11-28 10:11:03
    赞同 展开评论 打赏
  • Flink有三种基本的集群运行模式:

    1. Standalone模式:Flink作为独立集群运行,需要启动JobManager和TaskManager。
    2. Flink On YARN模式:在YARN上运行Flink应用程序,可以利用YARN进行资源管理和调度。
    3. Flink On Kubernetes模式:在Kubernetes集群上运行Flink应用程序,可以利用Kubernetes的容器化能力和强大的生态。

    以下是这三种模式的一些优缺点:

    • Standalone模式:
      优点:简单易用,易于理解和配置,适合小型集群或测试环境。
      缺点:资源管理和调度能力有限,不适合大规模生产环境。

    • Flink On YARN模式:
      优点:可以利用YARN的强大资源管理和调度能力,适合大型生产环境。
      缺点:需要配置YARN环境,对用户有一定的技术要求。

    • Flink On Kubernetes模式:
      优点:可以利用Kubernetes的容器化能力和强大的生态,适合云原生环境。
      缺点:需要配置Kubernetes环境,对用户的技术要求较高。

    在生产环境中,具体选择哪种模式主要取决于你的应用场景和技术需求。如果你的应用场景比较简单,或者你的团队对技术的要求不高,那么Standalone模式可能是最适合你的选择。如果你的应用场景比较复杂,或者你的团队对技术的要求比较高,那么Flink On YARN模式或Flink On Kubernetes模式可能是更适合你的选择。

    2023-11-28 09:12:06
    赞同 1 展开评论 打赏
  • Flink支持的三种主要集群模式包括:Standalone模式、Flink On YARN和Flink On K8S。

    • Standalone模式是最简单的一种集群模式,不需要依赖外部的资源调度平台如yarn或mesos。这种模式下,Flink自身提供集群管理功能,适合用于开发和测试环境。

    • Flink On YARN模式允许你将Flink任务提交到YARN集群上运行。在这种方式下,Flink可以充分利用YARN的资源管理器来调度和管理任务。但需要注意,当某个任务出现问题时,可能会导致整个YARN集群崩溃。

    • Flink On K8S模式则是将Flink部署到Kubernetes集群上。与前面两种模式不同,K8S是一个强大的容器编排工具,可以为Flink提供更多的资源管理和扩展性特性。

    2023-11-28 08:55:11
    赞同 展开评论 打赏
  • 参考:flink三种集群运行模式的优缺点对比https://blog.csdn.net/qq_44831907/article/details/127454478

    flink 三种基本运行模式(抽象概念):Session、Per-job、Application
    standalone、Yarn、k8s等——flink基于三种基本运行模式根据不同集群资源管理策略衍生出的不同实现类

    image.png

    1.1 先看每种模式的介绍:
    Session :多个jobs共享一个JobManager,即所有的任务都运行在这一个集群。例如Standalone静态部署模式。适合单个规模小、执行时间短的大量作业。

    集群生命周期:不与任务挂钩,作业完成后仍会继续运行知道手动停止session。
    集群资源隔离:所有任务都运行在一个集群上面,所以隔离性差。Flink的Slot仅能隔离内存,并不能隔离CPU资源。如果 TaskManager 崩溃,则在此 TaskManager 上运行 task 的所有作业都将失败。
    main()方法在Client执行。
    Per-job:每一个job都会动态创建一个专属于自己的集群。

    集群生命周期:与任务挂钩,随任务运行创建;一旦作业完成,集群将被销毁。
    集群资源隔离:一个任务独占一个集群,隔离性最好。
    main()方法在Client执行。
    Application:Application这个词指的是包含一个或多个job的程序。用线程进程概念来类别,一个游戏进程(Application)会专门有渲染画面的线程(job)也会有播放音乐的线程(job)。此模式,一个Application动态创建一个专属自己的集群,Application内所有job共享该集群。

    集群生命周期:与Flink 应用(Application)挂钩,随Application创建,随Application结束而消亡。
    集群资源隔离:Application之间资源隔离,Application内所有job共享集群。
    main()方法在Cluster执行
    1.2 一些结论
    其他概念比较容易理解,main()方法在哪执行这点会挺让人迷惑的:究竟main()方法里面干了什么?导致main()方法成为指标的原因又是什么?

    熟悉flink架构的大家应该记得,main()方法执行后,会获得任务的jar包及相关依赖jar包,同时,会将StreamGraph,最终生成JobGraph的转换。

    main()方法在Client端执行,会给客户端带来额外的压力。且多个作业同时使用同一Client时,会存在单点瓶颈,拖累Cluster。

    如果在集群侧执行main(),Client的工作就仅仅将任务的jar包提交即可,main()会在JM的集群入口类(ApplicationClusterEntryPoint)执行main()方法生成JobGraph。由于集群一般资源比较充足,并不会对集群带来太大的压力。

    三种基本运行模式下根据不同集群资源管理策略衍生了多种不同的实现类,下一节我们会在三种基本运行模式的衍生实现类中挑选

    参考:flink三种集群运行模式的优缺点对比https://blog.csdn.net/qq_44831907/article/details/127454478

    2023-11-28 08:36:13
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    link有三种集群模式:Standalone模式、Flink On YARN和Flink On K8S。这三种模式在生产环境中的选择取决于您的具体需求和环境。下面是这三种模式的优缺点以及如何在生产环境中选择合适的模式。

    1. Standalone模式:
      优点:
    • 简单:无需依赖第三方资源管理系统,配置和管理较为简单。
    • 易于调试:在开发和测试阶段,可以方便地启动和停止集群。
    • 资源隔离:每个任务在一个独立的JVM进程中运行,可以确保任务之间的资源隔离。
      缺点:
    • 资源利用率低:在多租户环境中,资源利用率较低,因为每个任务都有自己的JVM进程。
    • 扩展性受限:当集群规模较大时,管理和扩展较为困难。
    1. Flink On YARN:
      优点:
    • 资源利用率高:在多租户环境中,可以充分利用YARN的资源调度能力,提高资源利用率。
    • 扩展性好:基于YARN的资源管理系统,可以方便地实现集群的扩展和容错。
    • 支持多种集群类型:除了支持Flink集群外,还可以支持其他基于YARN的应用。
      缺点:
    • 配置和管理复杂:需要依赖YARN,配置和管理相对较为复杂。
    • 资源隔离性较差:YARN的任务调度策略可能会导致任务之间的资源争抢。
    1. Flink On K8S:
      优点:
    • 资源利用率高:Kubernetes提供了细粒度的资源调度和隔离,可以充分利用集群资源。
    • 扩展性好:基于Kubernetes的容器编排,可以方便地实现集群的扩展和容错。
    • 高可用:Kubernetes提供了自动扩展、滚动更新等功能,可以提高集群的可用性。
      缺点:
    • 配置和管理复杂:需要依赖Kubernetes,配置和管理相对较为复杂。
    • 学习成本较高:需要掌握Kubernetes的相关知识才能进行配置和管理。
      生产环境选择建议:
    • 如果您的环境中有现成的YARN或K8S集群,并且您希望利用这些集群资源,那么可以选择Flink On YARN或Flink On K8S。
    • 如果您的环境较为简单,没有现成的集群管理系统,或者您希望在开发和测试阶段更加简单便捷地进行集群管理和调试,那么可以选择Standalone模式。
    • 如果您的应用对资源隔离性要求较高,那么可以选择Standalone模式或Flink On K8S。
    • 如果您的应用对资源利用率、扩展性和高可用性要求较高,那么可以选择Flink On YARN或Flink On K8S。
    2023-11-28 07:54:33
    赞同 展开评论 打赏
  • 生产环境中推荐使用Flink On YARN。

    • Standalone模式是集群模式的一种,独立模式是独立运行的,不依赖任何外部的资源管理平台,存在资源不足,出现故障不会自动扩展或重分配资源的能力,一般用在开发测试或作业非常少的场景下。
      部署相对简单,可以支持小规模,少量的任务运行;
      缺少系统层面对集群中Job的管理,容易遭成资源分配不均匀;
      资源隔离相对简单,任务之间资源竞争严重。

    • 在FlinkonYARN模式下,Flink在YARN(Hadoop的资源调度和集群管理系统)之上运行。Flink作为一个YARN应用程序,利用YARN来管理资源分配和任务调度。使用这种模式,可以充分利用Hadoop集群的资源,实现Flink的分布式计算。计算资源统一由Hadoop YARN管理,生产环境使用。

    • Flink On K8S,在Flink 1.9以上版本内置了K8S的客户端,Flink的可以直接向K8S申请计算资源,集群资源得到了更高效的利用。Flink 1.10 在 Kubernetes 集群上已经GA(生产可用)的两种部署模式,然后分析了处于 Beta 版本的 native session 部署模式和即将在 Flink 1.11 发布的 native per-job 部署模式。
      image.png

    2023-11-28 01:06:23
    赞同 展开评论 打赏
  • Flink的三种集群模式各有优缺点:

    • Standalone模式:这是最简单的部署模式,不需要额外安装其他服务即可运行,适合于开发测试环境或者小型生产环境。
    • Flink On YARN模式:这种模式利用了YARN作为资源管理系统,可以更好地进行资源配置,更适合于大型生产环境。
    • Flink On K8S模式:这种模式利用了Kubernetes作为资源管理系统,具有良好的可伸缩性和容错性,适合于大规模分布式生产环境。

    生产环境中的选择取决于具体的需求,例如如果希望充分利用现有的基础设施,那么可以选择Flink On YARN模式;如果希望更好地控制资源分配和调度,那么可以选择Flink On K8S模式。如果您对于Flink的使用场景不太熟悉,建议先在开发测试环境中使用Standalone模式进行试验,并根据实际需求逐步向生产环境过渡。

    2023-11-27 20:49:10
    赞同 展开评论 打赏
滑动查看更多

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载