本篇主要讲述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触发的即可。

Flink学习1——运行时架构(standalone模式)相关推荐

  1. Flink运行时架构及各部署模式下作业提交流程

    1.运行时架构 1.1 核心组件 1.1.1 JobManager 作业管理器,对于一个提交执行的作业,JobManager 是真正意义上的"管理者"(Master),负责管理调度 ...

  2. Flink运行时架构 完整使用 (第四章)

    Flink运行时架构 完整使用 一.系统架构 1.整体构成 2.作业管理器(JobManager) 1. JobMaster 2. 资源管理器(ResourceManager) 3. 分发器(Disp ...

  3. Flink运行时架构

    1 运行时相关的组件     Flink运行时架构主要包括四个不同的组件:作业管理器(JobManager).资源管理器(ResourceManager).任务管理器(TaskManager),以及分 ...

  4. Spark基础学习笔记02:Spark运行时架构

    文章目录 零.本讲学习目标 一.Spark运行时架构 二.YARN集群架构 (一)YARN集群主要组件 1.ResourceManager - 资源管理器 2.NodeManager - 节点管理器 ...

  5. WCF服务端运行时架构体系详解[下篇]

    作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象.站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象.如果站在WCF服务端运行时框架来说,终结点实际上指 ...

  6. Freedos在运行时从实模式进入保护模式

    台风夜基本是不会睡觉的,写点有意思的.此时,2019年8月10日 2:20. 酷爱历史,于是在主音吉他手的推荐下,在历史的垃圾堆里找到了Freedos.这个从1994年开始的dos兼容开源操作系统.实 ...

  7. 在WildFly中运行多个standalone模式的实例

    WildFly作为一款优秀的EJB容器,其前身为JBoss AS.JBoss作为一款开源的应用服务器,被广泛的应用在各种项目当中.假设我们现在有这样一个项目,他是以standalone的模式运行在Wi ...

  8. Taro3.2 适配 React Native 之运行时架构详解

    导读 由 58 前端团队主导的 Taro 3 适配 React Native 工作已完成有一段时间了.目前发布了多个体验版,也将在3月底迎来正式版.基于 Taro 的良好架构演变,适配 React N ...

  9. 大数据_Flink_数据处理_运行时架构4_作业调度原理及思考问题---Flink工作笔记0019

    首先我们来看这个过程,可以看到 1.比如我们写了一段代码,有可能用java写的,有可能用scala写的,这个代码,首先会生成一个数据流图,然后这个数据流图可以通过客户端client 2.提交给jobm ...

最新文章

  1. 分享7个我常去的国外AjaxJquery网站
  2. 每日学习笔记(18)
  3. 皮一皮:考试了,全国统一舔狗学校招生考试!
  4. 【偶尔一道ctf】xctf adword mobile easy-apk
  5. qt中用mysql获取所有的数据库、数据库中的表名
  6. mysql 5.7报1055错误的解决方法
  7. failed to initialize nvml driver/library version mismatch ubuntu
  8. java 连接远程服务器_java实现连接远程服务器并执行命令的基本原理
  9. 地表上最强编程语言——C语言
  10. C#命名规范,SqlServer命名规范
  11. c语言第八章实验题答案,第八章实验报告
  12. Java-虚拟机-堆的内存规划/新生代/老年代/卡表
  13. sqlplus使用教程
  14. 64位数开根号c语言,平方根的C语言实现(三) ——最终程序实现
  15. 干货分享——安卓USB通信
  16. 快速缓解眼睛疲劳的穴位按摩
  17. bind dlz mysql rpm_智能DNS --BIND DLZ+MYSQL
  18. 优秀平面设计师是如何思考的?
  19. 免费最新微信,QQ拦截查询代码接口
  20. opencv实现车牌识别

热门文章

  1. Python整数的溢出问题
  2. 即时消息服务器eChat
  3. 中兴echat_公网对讲机都有哪些平台?
  4. 我的开车心得-送给马路新人 【转】
  5. 使用微软云服务器搭建Hadoop集群
  6. flex布局控制每行显示几个且有间隔
  7. linux下C++base64加解密与图片互转
  8. SAP 第三方销售详解
  9. 软件开发团队必备管理工具
  10. char, unsigned char, int,unsigned int之间的相互转换