Flink学习1——运行时架构(standalone模式)

2023-11-12

本篇主要讲述Flink Standalone模式下的运行时架构以及各个组件负责的功能,Flink的运行方式有很多,但都大同小异,本文基本可以满足对flink运行时架构的学习。

正文

Flink系统是主从模式,主要有两个组件构成分别是JobManager(Master)和TaskManager(Slave)。组件之间的通信借助于Akka。下图是standalone模式下的运行时架构图

  • JobManager相当于Yarn中的ResourceManager,TaskManager相当于Yarn中的NodeManager,TaskSlot相当于Yarn的Container,上图相当于spark的Standalone,需要Flink自己管理资源的情况。但是类别归类比,最终Flink的TaskManager是在yarn的container中启动的!因为container可以任务是一块独立的物理内存。在这个内存中可以启动一个JVM(可以是TM也可以是JM),如果是TM,那么TM中包含slot,slot也可以任务是一块内存区域,但是这个内存区域应该是JVM堆内存(也可能包含一部分堆外内存)。所以从都是内存区域的这个角度来讲,他们是类似的。

  • 客户端用于提交Flink程序,可以像Spark那样通过命令行提交,Flink还支持通过Web UI提交(这个功能在实际生产环境中一般会被禁用)。比如我们在服务器命令行提交flink程序,那这个提交程序的命令行就可以理解为是客户端。

  • 一个集群中只有一个活跃的JobManager,负责整个集群的任务管理和资源管理,TM心跳信息,状态统计信息等会发给JM。

  • TaskManager负责任务的具体执行和对应任务在每个节点上的资源申请和管理,程序运行时会在TM之间交换数据,比如有些算子的数据交换可能是跨slot,类似于Spark的shuffle操作。

  • 客户端提交的应用会给JobManager,JobManager会根据注册给自己的TaskManager的情况分配资源给应用程序。

  • TaskManager是一个JVM进程,它可能会在独立的线程上运行一个或者多个子任务,每个任务就是一个task,运行在TaskSlot里面。

  • 为了控制一个TaskManager能接受多少task,TaskManager通过task slot来控制(一个TaskManager至少有一个task slot)。上面说了,slot就类似于container,是对资源(内存、CPU)的封装。CPU是无法独享的,但是内存是独享的,也就是每个task都有自己的内存空间。

总结

1. 本文主要讲述了Flink不同组件在flink任务执行时的作用。

2. 上图中有画出TaskManager之间的数据交互。因为DataSource中的数据在分发给TaskSlot以后并不是一成不变的,类似Spark中的shuffle,有些算子中的数据会发往不同的slot(像keyBy算子),在发往不同slot的时候这不同的slot很可能就是跨TaskManager的,因此不同TM会存在大量的数据交互操作。

3. 上图还有画出不管是TaskManager还是JobManager都有一个Actor System。这便是负责通信的akka的重要组件。TaskManager需要定时发送心跳给JobManager告诉它自己还在正常工作。

4. 上图JobManager中有一个Checkpoint Coordinator,还有一条箭头指向TaskManager。首先Checkpoint是Flink用于容错定时触发的报错现在状态的轻量级快照,这个后面会讲。现在知道是JM通知TM触发的即可。

 

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

Flink学习1——运行时架构(standalone模式) 的相关文章

  • 基本的垃圾回收算法总结

    Java虚拟机中的垃圾回收机制的是虚拟机的灵魂所在 下面介绍下虚拟机中的主要回收算法 引用计数法 实现 对于实例化的一个对象O 只要有任何一个其他的对象引用O O的引用计数器就加一 当引用失效的情况下 引用计数器减一 优点 实现简单 缺点

随机推荐

  • 全国各大城市的经纬度表,留着以后做查询库用

    安徽省合肥的经纬度北纬31 52东经117 17 安徽省安庆的经纬度北纬30 31东经117 02 安徽省蚌埠的经纬度北纬32 56东经117 21 安徽省亳州的经纬度北纬33 52东经115 47 安徽省巢湖的经纬度北纬31 36东经11
  • css 卡片翻转效果实现

    直接贴代码
  • Vue 引入高德地图 vue-amap

    一 在高德开发平台 获取Key 已有可跳过 高德开发者平台 链接地址 1 控制台 我的应用 创建应用 添加key 创建应用 新建应用 选择web端 JS平台 last 到这里的 key 就有了 还得到了一个安全密钥 二 引入vue amap
  • 5G应用标志着移动互联网新时代真正到来

    5G网络普及后很可能实现已经多次被我们所畅想的万物互联 通过网络把家用电视 冰箱 洗衣机 空调等连接起来 再通过一个软件来进行控制 5G超高的网速 超低的延迟将会使无人驾驶 无人机作业 远程医疗技术等步入成熟阶段 因此 5G的应用标志着移动
  • TypeScript 在 vue 中的使用

    本文主要介绍 TypeScript 在 vue 中的使用 还有一些j注释起来的 js 代码做对照 参考链接 合成 API 的 TypeScript vue3中配合使用TS 还需要额外安装一个vscode插件 Typescript Vue P
  • 基于snooplog分析蓝牙连接过程,进一步学习蓝牙协议栈

    一 什么是BT snoop log 首先问题 1 为什么远端发来的消息没有收到 2 为什么搜索不到设备 3 为什么连不上 4 总之 研发过程中会遇到很多奇奇怪怪的问题 我们无法通过现象去分析原因 也不可能再过一遍代码吧 这时候需要再某些代码
  • 期货交易,一些你不得不知道的技巧

    众所周知 期货市场变化莫测 既有风险 又兼具了高回报 因此也被誉为 21世纪冒险者的游戏 虽然期货投资受市场 政治形势 经济发展等因素的影响 但作为一个成熟的交易模式 期货依然有着很大的魅力 既可以做长线 也可以短线为王 但无论采用何种交易
  • 如何建设水利数字孪生流域

    数字孪生流域是以物理流域为单元 时空数据为底座 数学模型为核心 水利知识为驱动 对物理流域全要素和水利治理管理活动全过程的数字化映射 智能化模拟 实现与物理流域同步仿真运行 虚实交互 迭代优化 建设水利数字孪生流域 重点包括以下几件事 获取
  • nginx日志access.log error.log按天生成存储,定时删除日志

    bin bash function cut nginx log files for lnmp v0 5 and v0 6 author http lnmp org set the path to nginx log files log fi
  • Qt多线程基础(一)线程同步之互斥锁同步

    一 直接使用QMutex进行同步 创建线程方法 继承自QThread 重写void run 函数 调用成员start 启动线程 start 中可加入优先级参数 互斥锁同步方法 void run 函数中使用QMutex来实现同步 当多个线程访
  • 【JS随笔】监听DOM内容改变

    目录 前言 一 addEventListener 1 示例 二 MutationObserver 1 示例1 2 示例2 总结 参考资料 前言 今天项目遇到一个需要监听DOM变化 根据DOM的变化情况 来展示不同的内容 于是上网搜索了各种方
  • HTML语法学习以及作业解答

    文章目录 技巧 html标签练习 作业01 作业02 作业03 作业04 作业05 作业06 作业07 作业08 作业09 作业10 技巧 1 输入 html5即可补全出html的骨架 或者是 tab键 2 MDN网站 https deve
  • git pull时报合并冲突的bug

    想在本地拉下最新的代码 不知为啥 出现合并冲突的bug warning Cannot merge binary files by tar HEAD vs 050fecfd1537b03953d219429f3 Auto merging by
  • 【解决】linux虚拟机开放端口号,虚拟机centos7开放端口

    原文链接 1 先查看防火墙是否开启的状态 以及开放端口的情况 systemctl status firewalld service 查看防火墙开启还是关闭 sudo firewall cmd list all 可以查看端口开放情况 fire
  • SSRF-服务端请求伪造

    SSRF 服务端请求伪造 1 SSRF是什么 SSRF Server side Request Forge 服务端请求伪造 由攻击者构造的攻击链接传给服务端执行造成的漏洞 一般用来在外网探测或攻击内网服务 2 SSRF可以做什么 扫内网 向
  • Latex编号

    用圆点标号 begin itemize item Latex 1 item Latex 2 item Latex 3 end itemize 效果如下 用数字编号 默认数字编号 begin enumerate item Latex 1 it
  • js 比较两个数组的内容是否相同

    js比较数组 arrA 和 arrB 可以用 arrA sort toString arrB sort toString 来进行比较 用循环肯定可以实现 不过太麻烦 这是一种简单的方法先将数组排序 然后转化成字符串 再比较字符串即可 测试时
  • Linux(ubuntu)mysql数据库主从同步、配置

    一 查看两台主机的版本Ubuntu 16 04 3 root iZ2zeht3zvxbq5ycy698pwZ lsb release a LSB Version core 9 20160110ubuntu0 2 amd64 core 9 2
  • 网站性能优化从入门到粗通(PHP 篇)

    本文来自作者 蒋岩 在 GitChat 上分享 网站性能优化从入门到粗通 PHP 篇 阅读原文 查看交流实录 文末高能 编辑 哈比 题外话 本次 Chat 的主题是入门到粗通 所以内容对于老司机来说会比较 Low 请多包涵 进入正题 一 测
  • Flink学习1——运行时架构(standalone模式)

    本篇主要讲述Flink Standalone模式下的运行时架构以及各个组件负责的功能 Flink的运行方式有很多 但都大同小异 本文基本可以满足对flink运行时架构的学习 正文 Flink系统是主从模式 主要有两个组件构成分别是JobMa