flink部署三种模式(案例操作)

2023-11-05

一. Local模式

1. 应用场景

在local模式下,不需要启动任何的进程,仅仅是使用本地线程来模拟flink的进程,适用于测试开发调试等,这种模式下,不用更改任何配置,只需要保证jdk8安装正常即可

2. 操作

#第一步:上传安装包并解压
tar -zxvf flink-1.15.2-bin-scala_2.12.tgz

注意:高版本需要修改配置文件
默认是localhost,改为0.0.0.0。直接启动默认监听的是本地ip,远程访问webUI打不开,如下图:
在这里插入图片描述

vim flink-conf.yaml

在这里插入图片描述

#第二步:直接使用脚本启动
cd /opt/flink-1.15.2
bin/start-cluster.sh
#启动成功之后,执行jps就能查看到启动了两个进程,例如:
#18180 StandaloneSessionClusterEntrypoint
#18614 TaskManagerRunner
jps
#第三步:webUI界面访问
浏览器访问http://ip:8081/

在这里插入图片描述
在这里插入图片描述
在安装文件夹里找到flink-1.5.2\examples\batch\WordCount.jar,浏览器页面add后submit,如下图展示结果:
在这里插入图片描述

二. Standalone 模式

1. 应用场景

standalone模式也叫作独立模式,主从模式,自带完整的服务,可单独部署到一个集群中,无序依赖任何其他资源管理系统。
优势:只需要一个集群,所有作业提交之后都进集群处理,集群的生命周期是超越作业上的,作业结束释放资源,集群继续运行。
缺点:因为资源是共享的,当资源不足时,提交新的作业会失败,另外,同一个taskmanager上可能运行了很多作业,如果其中一个发生故障导致taskmanager宕机,所有作业都将会受到影响。
总结:适合单个规模小,执行时间短的大量作业。

2. 部署模式

2.1 会话模式

在这里插入图片描述

2.1.1 安装规划

Flink 是典型的 Master-Slave 架构的分布式数据处理框架, 其中 Master 角色对应着 JobManager,Slave 角色则对应 TaskManager。我们对三台节点服务器的角色分配如下所示。

节点服务器 hadoop102 hadoop103 hadoop104
角色 JobManager TaskManager TaskManager
2.1.2 修改配置

(1) 修改flink-conf.yaml

vim flink-conf.yaml
# JobManager 节点地址 .
jobmanager.rpc.address: hadoop102

这就指定了 hadoop102 节点服务器为 JobManager 节点。

(2) 修改workers
修改 workers 文件, 将另外两台节点服务器添加为本 Flink 集群的 TaskManager 节点, 具体修改如下:

vim workers
hadoop103
hadoop104

这样就指定了 hadoop103 和 hadoop104 为 TaskManager 节点。
(3) 优化扩展
在 flink-conf.yaml 文件中还可以对集群中的 JobManager 和 TaskManager 组件 进行优化配置, 主要配置项如下:

  • jobmanager.memory.process.size:对 JobManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。
  • taskmanager.memory.process.size:对 TaskManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。
  • taskmanager.numberOfTaskSlots:对每个 TaskManager 能够分配的 Slot 数量进行配置, 默认为 1,可根据 TaskManager 所在的机器能够提供给 Flink 的 CPU 数量决定。所谓 Slot 就是TaskManager 中具体运行一个任务所分配的计算资源。
  • parallelism.default:Flink 任务执行的默认并行度, 优先级低于代码中进行的并行度配 置和任务提交时使用参数指定的并行度数量。
2.1.3 分发安装目录

配置修改完毕后, 将 Flink 安装目录发给另外两个节点服务器。

scp -r ./flink-1.13.0 root@hadoop103:/opt/module
scp -r ./flink-1.13.0 root@hadoop104:/opt/module
2.1.4 启动集群

(1)在 hadoop102 节点服务器上执行 start-cluster.sh 启动 Flink 集群:

bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host hadoop102. 
Starting taskexecutor daemon on host hadoop103. 
Starting taskexecutor daemon on host hadoop104.

(2)查看进程情况:

[root@hadoop102 flink-1.13.0]$ jps
13859 Jps
13782 StandaloneSessionClusterEntrypoint
[root@hadoop103 flink-1.13.0]$ jps
12215 Jps
12124 TaskManagerRunner
[root@hadoop104 flink-1.13.0]$ jps
11602 TaskManagerRunner
11694 Jps
2.1.5 访问 Web UI

在这里插入图片描述

这里可以明显看到, 当前集群的 TaskManager 数量为 2;由于默认每个 TaskManager 的 Slot 数量为 1,所以总 Slot 数和可用 Slot 数都为 2。

2.2 单作业模式

为了更好的隔离资源,为每个提交的作业启动一个集群
在这里插入图片描述
由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有自己的jobmanager管理,占用独享的资源,即使发生故障,也不会影响其他作业。
总结:在生产环境中更加稳定,成为实际应用中的首选,但单作业模式一般需要借助一个资源管理框架来启动集群,Yarn,k8s等。

Flink 本身无法直接以单作业方式启动集群, 一般需要借助一些资源管理平台。所以 Flink 的独立(Standalone)集群并不支持单作业模式部署。

2.3 应用模式

前两种模式应用代码都是在客户端运行,然后由客户端提交给jobmanager的,这种方式的弊端是:需要占用大量网络带宽,去下载依赖和把二进制数据发送给jobmanager,将会加重客户端资源消耗。
所以Application Mode的解决办法是:不需要客户端,直接把应用提交到jobmanager上运行,这意味着要为每个提交的应用单独启动一个jobmanager,也就是创建一个集群,jobmanager执行完自己的应用将会关闭
在这里插入图片描述
应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应用程序的,即使应用包含了多个作业,也只创建一个集群。

三. yarn模式(未实操)

部署过程:客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。
高可用:
YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。
(还未实际操作…)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flink部署三种模式(案例操作) 的相关文章

  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • 解决 sbt 中 jar 加载冲突的问题

    当两个特定的 sbt 插件启动时 我在 sbt 启动时收到以下错误加在一起到其构建定义中的项目 这些 sbt 插件之一是规模化jdbc https github com scalikejdbc scalikejdbc另一个是my own h
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 使用 apply 方法的泛型类型的 Scala 工厂?

    假设我有以下特征 它定义了一个接口并采用几个类型参数 trait Foo A B implementation details not important 我想使用伴随对象作为该特征的具体实现的工厂 我还想强制用户使用Foo接口而不是子类所
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 你能在 scala 中使用 varargs 柯里化一个函数吗?

    我正在考虑如何用可变参数柯里化一种方法 然后我意识到我什至不知道如何去做 理想情况下 它应该让您可以随时开始使用它 然后以可迭代结束 def concat strs String strs mkString val curriedConca

随机推荐

  • 浅谈云计算的三种服务模式:IaaS,PaaS和SaaS

    2008年 云计算的概念由Google率先提出 短时间内其核心理念在全球范围内迅速传播并发展 2010年在国内形成趋势 各大IT互联网商业巨头将目光聚焦在云计算 至目前 云计算在中国已经慢慢开始成熟起来 云计算指的是通过网络 云 将巨大的数
  • python从入门到精通——完整教程【转载】

    文章目录 一 pycharm下载安装 二 python下载安装 三 pycharm上配置python 四 配置镜像源让你下载嗖嗖的快 4 1 pycharm内部配置 4 2 手动添加镜像源 4 3 永久配置镜像源 五 插件安装 比如汉化 5
  • ios逆向(二)frida-ios-dump一键砸壳详细版

    写在前面 本教程为本人实际操作记录 在此感谢庆哥官方 一条命令完成砸壳 github frida ios dump ios端配置 打开cydia 添加源 https build frida re 打开刚刚添加的源 安装 frida 安装完成
  • 注册表关闭windows安全中心_关闭win10自动更新的三个小妙招,再也不用被自动下载更新打扰了...

    对于Windows 10操作系统 微软默认设置为自动下载并安装Windows 以确保系统正常运行并保持其安全性 但是在某些情况下 需要关闭Windows 10更新或在Windows 10上禁用自动更新安装 这该如何办呢 本文目录 关于Win
  • Linux系统中文件查找find函数用法

    find name april 在当前目录下查找以april开始的文件 find name april fprint file 在当前目录下查找以april开始的文件 并把结果输出到file中 find name ap o name may
  • JAVA导入txt文件并按行读取内容封装成实体以及导出下载

    业务背景 前台页面支持用户上传txt类型的文件 用做一些服务的配置 我们需求将改文件解析 读取里面的内容 并封装成接口参数 再调第三方接口 上代码 PostMapping uploadHost RequiresRoles admin pub
  • p9plus升级鸿蒙教程,华为P9 Plus(VIE-AL10 全网通 EMUI 5.0)一键ROOT图文详解教程

    伴随着安卓刷机越来越流行 很多安卓用户都喜欢上了这种可以自定个性系统的行为 那么华为P9 Plus VIE AL10 全网通 EMUI 5 0 怎么获取ROOT权限 华为P9 Plus VIE AL10 全网通 EMUI 5 0 一ROOT
  • IMEI、IMSI、ICCID、SN是什么?意义和区别?通信模组或手机的唯一识别码

    最近在做几个4G移动端的产品 初入行门有很多生涩的名词 想获取一个全球唯一ID作为设备后台管理编号 就扯出了 IMEI IMSI ICCID SN 这几个东西 IMEI IMEI 国际移动设备识别码 International Mobile
  • 如何正确理解三极管的放大区、饱和区、截止区

    作为电子初学者来说 模拟电路非常重要 模拟电路的三极管的应用是重中之重 能正确理解三极管的放大区 饱和区 截止区是理解三极管的标志 很多初学者都会认为三极管是两个 PN 结的简单凑合 如下图 这种想法是错误的 两个二极管的组合不能形成一个三
  • 多线程和高并发介绍

    多线程和高并发介绍 文章目录 多线程和高并发介绍 前言 一 什么是多线程 1 多线程介绍 2 多线程实现原理 3 白话文解释多线程 4 多线程存在的问题 二 什么是高并发 1 高并发介绍 2 如何提升系统的并发能力 三 多线程和高并发 总结
  • es6对象多层解构、数组解构

    对象类 基础对象解构 const obj a 1 b 2 c 3 const a b c obj console log a b c 1 2 3 多层对象解构 const obj a 1 b 2 c 3 d d1 4 const a b c
  • qt调用Linux脚本范例,QT下实现对Linux Shell调用的几种方法

    使用QProcess QThread include int main QProcess execute ls return 0 QProcess poc new QProcess poc gt start ping 222 207 53
  • [极客大挑战 2019]Knife

    极客大挑战 2019 Knife 主界面 很显然 题目已经内置了一个一句话木马 我们只需要用蚁剑连接即可 但是我在连接蚁剑时报错了 错误如下 经过搜索 原来是开启了手动代理模式 在菜单中关闭即可 更改后成功进入 在根目录下找到flag文件
  • 20050405:什么都要会啊

    为了要修补门户的页面 今天学会了三样 怎么用Photoshop切割图片并存入网页 怎么用DW在表格中平铺背景图片 在么用Tomcat部署网站 真的是什么都要会啊 今天下午在漫网论坛上发了封贴子 晚上却被删了 原贴如下 关于日本动漫中女性角色
  • C 语言实现简单有限状态机

    简介 常说的状态机是有限状态机 FSM 是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型 三个特征 状态总数 state 是有限的 任一时刻 只处在一种状态之中 某种条件下 会从一种状态转变 transition 到另一种
  • KVM快照

    KVM快照就是将虚拟机在某一个时间点上的磁盘内容 全部 或部分 内存和设备状态保存一下 以备将来恢复之用 一 内存状态快照 只是保持内存和虚机使用的其它资源的状态 如果虚机状态快照在做和恢复之间磁盘没有被修改 那么虚机将保持一个持续的状态
  • 不安装Visual Studio,只用Windows SDK搭建VC环境

    首先你需要下载的是 Microsoft Windows SDK for Windows 7 and NET Framework 4 下载以后你得到的是一个网络安装文件 确保网络的连接 安装Windows SDK 7 1 注意得到的Windo
  • git的分支

    1 master主分支 在初始化本地Git仓库的时候 Git默认已经帮我们创建了一个名字叫做master的分支 通常我们把这个master分支叫做主分支 在实际工作中 master主分支的作用是 用来保存和记录整个项目已完成的功能代码 因此
  • 图形基础-叉乘

    using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviour public Vecto
  • flink部署三种模式(案例操作)

    文章目录 一 Local模式 1 应用场景 2 操作 二 Standalone 模式 1 应用场景 2 部署模式 2 1 会话模式 2 1 1 安装规划 2 1 2 修改配置 2 1 3 分发安装目录 2 1 4 启动集群 2 1 5 访问