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

目录

一、部署模式

1. 部署模式分类:

1.1 会话模式(Session Mode):

优点:

缺点:

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

优点: ​

缺点: ​

1.3 应用模式(Application Mode):

2. 独立部署:

2.1 概念:

2.2 部署在会话模式下:

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

2.4 部署在应用模式下:

2.5 部署在高可用模式下:

3. YARN部署:

3.1 概念:

3.2 部署在会话模式下:

3.3 部署在单作业模式下:

3.4 部署在应用模式下:

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 的重试次数来实现的高可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/350658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes/k8s之安全机制:

k8s当中的安全机制 核心是分布式集群管理工具&#xff0c;容器编排&#xff0c;安全机制核心是:API SERVER作为整个集群内部通信的中介&#xff0c;也是外部控制的入口&#xff0c;所有的安全机制都是围绕api server开设计的。 请求api资源 1、认证 2、鉴权 3、准入机制 三…

【技术预研】StarRocks官方文档浅析(2)

背景说明 基于starRocks官方文档&#xff0c;对其内容进行一定解析&#xff0c;方便大家理解和使用。 若无特殊标注&#xff0c;startRocks版本是3.2。 下面的章节和官方文档保持一致。 参考文档 产品简介 | StarRocks StarRocks StarRocks 是一款高性能分析型数据仓库&…

Conda python管理环境environments 四 从入门到精通

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装Conda python运行的包和环境管理 入门Conda python管理环境environments 一 从入门到精通Conda python管理环境environments 二 从入门到精通Conda python管理环境environments 三 从入门到精通…

CSS复合选择器和CSS层叠性、继承性有哪些内容?

知识引入 1.CSS复合选择器 书写CSS样式表时&#xff0c;可以使用CSS基础选择器选中目标元素。但是在实际网站开发中&#xff0c;一个网页中可能包含成千上万的元素&#xff0c;如果仅使用CSS基础选择器&#xff0c;是远远不够的。为此&#xff0c;CSS提供了几种复合选择器&am…

【论文笔记】Learning Deconvolution Network for Semantic Segmentation

重要说明&#xff1a;严格来说&#xff0c;论文所指的反卷积并不是真正的 deconvolution network 。 关于 deconvolution network 的详细介绍&#xff0c;请参考另一篇博客&#xff1a;什么是Deconvolutional Network&#xff1f; 一、参考资料 Learning Deconvolution Netwo…

命令行启动Android Studio模拟器

1、sdk路径查看&#xff08;打开Android Studio&#xff09; 以上前提是安装的Android Studio并添加了模拟器&#xff01;&#xff01;&#xff01; 2、复制路径在终端进入到 cd /Users/duxi/Library/Android/sdk目录&#xff08;命令行启动不用打开Android Studio就能运行模拟…

深入理解ZooKeeper分布式锁

第1章&#xff1a;引言 分布式系统&#xff0c;简单来说&#xff0c;就是由多台计算机通过网络相连&#xff0c;共同完成任务的系统。想象一下&#xff0c;咱们平时上网浏览网页、看视频&#xff0c;背后其实都是一大堆服务器在协同工作。这些服务器之间需要协调一致&#xff…

微信小程序元素/文字在横向和纵向实现居中对齐、两端对齐、左右对齐、上下对齐

元素对齐往往是新学者的一大困惑点&#xff0c;在此总结常用的各种元素和文字对齐方式以供参考&#xff1a; 初始显示 .wxml <view style"width: 100%;height: 500rpx; background-color: lightgray;"><view style"width: 200rpx;height:100rpx;bac…

navicat连接postgresql、人大金仓等数据库报错

navicat连接postgresql、人大金仓数据库报错问题是一个偶现的问题&#xff0c;需要我们特别关注&#xff1a; 1、客户端连接人大金仓数据库 这里注意&#xff1a;navicat连接postgresql、人大金仓数据库时均选择postgresql类型&#xff0c;因为人大金仓数据库底层和psql数据库…

Github 无法正常访问?一招解决

查询IP网址: https://ip.chinaz.com/ 主页如下&#xff1a; 分别查询以下三个网址的IP&#xff1a; github.com github.global.ssl.fastly.net assets-cdn.github.com 修改 hosts 文件&#xff1a; 将 /etc/hosts 复制到 home 下 sudo cp /etc/hosts ./ gedit hosts 在底下…

【大根堆】【C++算法】871 最低加油次数

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 大根堆 优先队列 LeetCode:871最低加油次数 汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations 表示。其中 statio…

洛谷P5735 【深基7.例1】距离函数(C语言)

首先&#xff0c;三角形周长为 其次(x1,x2)和 &#xff08;y1,y2&#xff09;的距离 然后就可以为所欲为 #include <stdio.h> #include <math.h>double distance(double a1, double b1, double a2, double b2) {return sqrt((a1 - a2) * (a1 - a2) (b1 - b2) * …

code server安装使用教程

1. 安装 1.1. 下载code-server安装包 类似这种文件&#xff1a;code-server-3.10.2-linux-amd64.tar.gz 解压&#xff1a;tar -xvf code-server-3.10.2-linux-amd64.tar.gz 1.2 &#xff08;可选&#xff09;建立软连接 ln -s path/to/code-server-3.10.2-linux-amd64/bin…

IS-IS:05 ISIS开销值和协议优先级

IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 level-1 开销值和一个 level-2开销值。开销值可以在接口上或者全局上手动配置&#xff0c;也可以使用 auto-cost自动计算确定。 修改接口cost&#xff1a; int g0/0/0 isis cost 50修改全局cost&#xff1a; isis cir…

四、Kotlin 表达式

1. 常量 & 变量 1.1 可读写变量&#xff08;var&#xff09; var x initValue // x 称为可读写变量注意&#xff1a;当 var 声明的变量做成员属性时&#xff0c;默认提供 setter/getter 方法。 1.2 只读变量&#xff08;val&#xff09; val x initValue // x 称为只…

鸿蒙开发第2篇__装饰器

在ArkTS中&#xff0c; 有装饰器语法。 装饰器用于装饰类、结构、方法、变量&#xff0c;赋予其特殊的含义。 1. Component 表示自定义组件&#xff0c; 用此装饰器的组件是可重用的&#xff0c;可以与其他组件重合 此装饰器装饰的 struct 表示该结构体具有组件化能力&#…

学习STM32,该用哪款开发工具?

有很多初学者在问&#xff1a;学习STM32&#xff0c;该用哪款开发工具&#xff1f; 我首先说一下我的观点&#xff1a; 1.没有最好&#xff0c;只有适不适合&#xff0c;适合自己的才是最好的。 2.开发工具很多&#xff0c;各有各的特点&#xff0c;有优点肯定也有缺点。 本文…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…

8.6 代理设计模式

文章目录 一、代理模式&#xff08;Proxy Pattern&#xff09;概述二、代理模式和观察者设计模式三、模式结构四、协作角色五、实现策略六、相关模式七、示例八、应用 一、代理模式&#xff08;Proxy Pattern&#xff09;概述 代理模式是一种设计模式&#xff0c;它通过引入一个…

ThinkPHP+uni-app框架熊猫电竞赏金电竞系统源码PHP含APP+H5

熊猫电竞赏金电竞系统源码&#xff0c;包含APP、H5和搭建视频教程&#xff0c;支持运营级搭建&#xff0c;这套源码是基于ThinkPHPUniaapp框架开发的。 赏金电竞系统源码 APPh5搭建视频 可搭建&#xff01;运营级&#xff01; 赏金赛源码&#xff0c;用户通过平台打比赛&#x…