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部署三种模式(案例操作) 的相关文章

  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 浅谈云计算的三种服务模式: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 访问