大数据学习之Flink,了解Flink的多种部署模式

目录

一、部署模式

[1. 部署模式分类:](#1. 部署模式分类:)

[1.1 会话模式(Session Mode):](#1.1 会话模式(Session Mode):)

优点:

缺点:

[1.2 单作业模式(Per-Job Mode):](#1.2 单作业模式(Per-Job Mode):)

优点: ​

缺点: ​

[1.3 应用模式(Application Mode):](#1.3 应用模式(Application Mode):)

[2. 独立部署:](#2. 独立部署:)

[2.1 概念:](#2.1 概念:)

[2.2 部署在会话模式下:](#2.2 部署在会话模式下:)

[2.3 部署在单作业模式下:【Pass】](#2.3 部署在单作业模式下:【Pass】)

[2.4 部署在应用模式下:](#2.4 部署在应用模式下:)

[2.5 部署在高可用模式下:](#2.5 部署在高可用模式下:)

[3. YARN部署:](#3. YARN部署:)

[3.1 概念:](#3.1 概念:)

[3.2 部署在会话模式下:](#3.2 部署在会话模式下:)

[3.3 部署在单作业模式下:](#3.3 部署在单作业模式下:)

[3.4 部署在应用模式下:](#3.4 部署在应用模式下:)

[3.5 部署在高可用模式下:](#3.5 部署在高可用模式下:)


一、部署模式

1. 部署模式分类

  • 会话模式(Session Mode)

  • 单作业模式(Per-Job Mode)(1.15版本已弃用)

  • 应用模式(Application Mode)

他们三者的主要区别是集群的生命周期以及资源的分配方式不同以及程序执行的位置不同

1.1 会话模式(Session Mode)

会话模式就是在作业提交之前通过启动集群并创建会话,我们通过这个会话提交任务,所有的任务都在这个会话里,这种方式的特点是集群启动的时候就已经确定了资源,并且后续提交的作业也都在这个会话中,会出现资源的竞争

优点

集群启动时就已经创建了会话,资源也都是集群启动过程中确定的

所有提交的作业都在这个会话中,作业结束就释放资源

缺点

由于资源是共享的,所以当作业较多时就会产生资源竞争,资源不够了会导致作业提交失败

同一个TaskManager上可能运行了很多作业,如果一个作业导致TaskManager宕机,那么在这个TaskManager上的作业都会受到影响

1.2 单作业模式(Per-Job Mode):

单作业模式是不同于会话模式的,单作业模式是需要依赖其他资源管理器来实现的,比如yarn、k8s等,由于会话模式是共享资源,为了解决这个问题,单作业模式为每一次提交的任务都创建一个集群,每个作业的资源都相互隔离,并且一个TaskManager宕机不会影响其他作业。

优点: ​

为每一个作业启动一个集群,因此不会存在共享资源的问题,作业之间的资源相互隔离 ​ 发生故障时即使TaskManager宕机不会影响其他作业 ​

缺点: ​

每一个作业启动一个集群,比较浪费资源 ​ Flink本身无法直接这样运行,需要借助第三方资源管理器,比如YARN、K8S等 ​ Flink1.15版本被标记为废弃,使用应用模式替代;链接:

1.3 应用模式(Application Mode)

应用模式是对单作业模式的优化,不管是会话模式还是单作业模式,代码都是在客户端是进行执行的,然后由客户端提交给JobManager的,这种方式下客户端会比较耗资源,因为需要下载依赖和发送二进制文件到JobManager。

所以应用模式的解决办法就是不需要客户端了,直接把应用提交到JobManager上运行**,是直接由 JobManager 执行应用程序的,并且即使应用包含了多个作业,也只创建一个集群。

2. 独立部署

  • Flink Standalone

2.1 概念

  • 独立部署由Flink进行资源的管理,也是最简单的部署方式,此模式是独立运行的,不依赖第三方资源管理平台,缺点是资源不足的情况下会出现故障,不会自动扩展或者动态分配资源,必须手动处理。

  • 独立部署也分上面三种部署方式,分别是会话模式、单作业模式还是应用模式。生产环境不建议使用。

2.2 部署在会话模式

  • 会话模式是不依赖第三方资源调度管理平台,因此直接解压flink安装包,然后执行start-cluster.sh 即可开启会话模式

2.3 部署在单作业模式【Pass】

  • Flink 本身无法直接以单作业方式启动集群,一般需要借助一些资

  • 源管理平台。所以 Flink 的独立 (Standalone)集群并不支持单作业模式部署

2.4 部署在应用模式

  • 应用模式的特点是不提前创建集群,所以不能使用start-cluster.sh进行启动,可以通过使用standalone-job.sh 这个启动命令来启动JobManager

    复制代码
    bin/standalone-job.sh start --job-classname com.xxx.xxx.WordCount
  • 通过taskmanager.sh 启动TaskManager

    复制代码
    bin/taskmanager.sh start

2.5 部署在高可用模式下

.

3. YARN部署

  • Flink on yarn --> hadoop必须要配置好

3.1 概念

  • YARN部署是指Flink的资源调度由YARN进行管理,需要依赖Hadoop的YARN管理器

    在YARN模式下部署模式也分三种,分别是会话模式、单作业模式还是应用模式

  • 客户端把 Flink 应用提交给 Yarn 的 ResourceManager,Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。

    在这些容器上, Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。 Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源

    .

3.2 部署在会话模式

  • 需要先申请一个YARN会话来启动Flink集群

    复制代码
    # -nm test的意思是任务名
    bin/yarn-session.sh -nm test

    其他参数说明:

    -d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口, YARN session 也可以后台运行。 -jm(--jobManagerMemory):配置 JobManager 所需内存,默认单位 MB。 -nm(--name):配置在 YARN UI 界面上显示的任务名。 -qu(--queue):指定 YARN 队列名。 -tm(--taskManager):配置每个 TaskManager 所使用内存。

  • YARN会话启动后会给出一个WebUI地址以及一个 YARN application ID 。 在部署作业的时候可以通过WebUI部署也可以通过后台命令行部署 。

3.3 部署在单作业模式

  • 单作业模式是每提交一个任务就会生成单独的一个集群环境,因此我们开启单作业模式直接通过提交任务即可

    • 启动作业:

      复制代码
      bin/flink run -d -t yarn-per-job -c com.szc.wc.StreamWordCount xxx.jar
    • 查看作业:

      复制代码
      # 查看作业
      bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
    • 取消作业:

      复制代码
      # 取消作业
      bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>
  • 由于单作业模式是每个任务一个集群,因此取消某个作业就会使这个作业对应的集群也停掉。

3.4 部署在应用模式

  • 应用模式和单作业模式类似

    • 启动作业:

      复制代码
      bin/flink run-application -t yarn-application -c com.szc.wc.StreamWordCount xxx.jar
    • 查看作业:

      复制代码
      # 查看作业
      bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
    • 取消作业:

      复制代码
      # 取消作业
      bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>

3.5 部署在高可用模式下

  • YARN 模式的高可用和独立模式(Standalone)的高可用原理不一样。

  • Standalone 模式中, 同时启动多个 JobManager, 一个为"领导者"(leader),其他为"后备"(standby) , 当 leader 挂了, 其他的才会有一个成为 leader。

  • 而 YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。

相关推荐
凉白开3386 分钟前
spark总结
大数据·分布式·spark
等雨季7 分钟前
Spark总结
大数据·分布式·spark
xυlai10 分钟前
Spark-Streaming
大数据·分布式·spark
神奇的黄豆11 分钟前
Spark-Streaming核心编程(四)总结
大数据·spark
lilye6621 分钟前
精益数据分析(26/126):依据商业模式确定关键指标
大数据·人工智能·数据分析
灏瀚星空37 分钟前
从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 基础概念
笔记·python·学习·金融·概率论
我爱刮刮乐44 分钟前
关于flink两阶段提交高并发下程序卡住问题
大数据·flink·linq
无敌的牛1 小时前
AVL树的介绍与学习
数据结构·学习
A达峰绮1 小时前
设计一个新能源汽车控制系统开发框架,并提供一个符合ISO 26262标准的模块化设计方案。
大数据·开发语言·经验分享·新能源汽车
【0931】1 小时前
进程控制的学习
学习·操作系统