Flink(二)【架构原理,组件,提交流程】
一.运行架构
1.架构
基于yarn模式

0) Flink任务提交后,Client向HDFS上传Flink的Jar包和配置
1) 向Yarn ResourceManager提交任务,
2) ResourceManager分配Container资源,Yarn通知NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager
3) Client提交Job给Dispatcher
4) Dispatcher将JobGraph转发给JobManager
5) JobManager向Flink ResourceManager申请资源启动
6) Flink ResourceManager向Yarn申请资源TaskManager
7) Yarn ResourceManager分配Container资源。
8) Flink ResourceManager向通知资源所在的NodeMananger启动TaskManager
9) NodeManager加载Flink的jar和配置环境启动TaskManager,反向JobManager发送心跳包,等待任务
10) JobManager将执行的任务发送给TaskManager执行。
2.组件
Application Master 部分包含了三个组件:
1) Dispatcher
负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的 JobManager 组件
2) ResourceManager
负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager
3) JobManager
负责管理作业的执行,在一个 Flink 集群中可能有多个作业同时执行,每个作业 都有自己的 JobManager 组件
还有其他组件:
1) TaskManager
主要负责执行具体的task任务,从JobManager处接收需要部署的 Task,部署 启 动后,与自己的上游建立连接,接收数据并处理。
2) Cluster Manager
集群管理器,比如Standalone、YARN、K8s等。
3) Client
提交Job的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交Job后,Client可以结束进程(Streaming的任务),也可以不结束并等待结果返回。
二.核心概念
TaskManager 、 Slots
Taskmanager 类比 Spark 的Excutor
1个Taskmanager,1个JVM进程,运行多个线程Task,Task的个数等于Slot的个数。类似Spark的Excutor。
Slot 类比 Spark的Core
相同点
1个Slot启动1个线程,Slot的个数决定最大并行的Task数
不同点
①Slot多个Job共享,当空闲时其他Job可以使用(Yarn Session-Cluster模式);
Core只能当前Job内部使用,其他Job无法使用
②TaskManager的内存均分给Slot,意味Slot是内存空间,不是Spark的Core。
Parallelism(并行度)
正在执行的task数,就是当前的并行度
- 设置并行度
Spark:调用特殊算子(repartition)或者Shuffle。
Flink:可以直接给算子设置并行度,或者全局设置
注意:某些数据源数据的采集是无法改变并行度,如Socket
某个算子并行度2那么这个算子对应得task会拆分成2个subtask,一个特定算子的subtask的个数被称之为其并行度(parallelism),一般情况下,一个流程序的并行度是其所有算子中最大的并行度。
Task 、Subtask
- Task
可以理解为Spark的一个Stage中的并行度将不同算子的subtask组成的1个任务链,作为1个task执行
- Subtask
可以理解为1个算子有2个并行度,那么这个算子所在的Task就会拆分成两个SubTask。
Operator Chains(任务链)

可以理解为Spark中的一个Stage的同一分区的多个转换算子在1个task运行。
任务链形成条件:one-to-one的数据传输并且并行度相同
ExecutionGraph(执行图)任务生成过程
①client生成Sream Graph(数据流图)
②client 根据Sream Graph(数据流图)满足one to one 就转换成操作链,转换为 JobGraph(任务图)
③client将JobGraph(任务图)提交给JobManager,JobManager根据JobGraph(任务图)生成ExecutionGraph(执行图),然后展开并行度,转换为物理执行图,提交给TaskManager运行。
提交流程
通用的提交流程

基于yarn的提交流程

Flink(二)【架构原理,组件,提交流程】的更多相关文章
- Spark运行架构及作业提交流程
1.yarn-cluster模式: (1)client客户端提交spark Application应用程序到yarn集群. (2)ResourceManager收到了请求后,在集群中选择一个NodeM ...
- Flink提交流程和架构
一.Flink提交任务的流程 Flink任务提交后,Client向HDFS上传Flink的jar包和配置,之后向Yarn ResourceManager提交任务,ResourceManager分配Co ...
- 小记---------spark架构原理&主要组件和进程
spark的主要组件和进程 driver (进程): 我们编写的spark程序就在driver上,由driver进程执行 master(进程): 主要负责资源的 ...
- Mybatis架构原理(二)-二级缓存源码剖析
Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...
- SpringMVC架构&组件&执行流程
SpringMVC架构: 组件: DIspatcherServlet:前端控制器.相当于mvc模式的c,是整个流程控制的中心,负责调用其他组件处理用户的请求,降低了组件之间的耦合性. HandlerM ...
- Flink源码剖析:Jar包任务提交流程
Flink基于用户程序生成JobGraph,提交到集群进行分布式部署运行.本篇从源码角度讲解一下Flink Jar包是如何被提交到集群的.(本文源码基于Flink 1.11.3) 1 Flink ru ...
- [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
[源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apac ...
- 大数据体系概览Spark、Spark核心原理、架构原理、Spark特点
大数据体系概览Spark.Spark核心原理.架构原理.Spark特点 大数据体系概览(Spark的地位) 什么是Spark? Spark整体架构 Spark的特点 Spark核心原理 Spark架构 ...
- Flink资料(3)-- Flink一般架构和处理模型
Flink一般架构和处理模型 本文翻译自General Architecture and Process Model ----------------------------------------- ...
随机推荐
- 输出单层结点 牛客网 程序员面试金典 C++ Python
输出单层结点 牛客网 程序员面试金典 C++ Python 题目描述 对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表. 给定二叉树的根结点指针TreeNode* root,以及链表上 ...
- hdu 2200 Eddy's AC难题(简单数学。。)
题意: N个人,每个人AC的题数都不一样. Eddy想从中选出一部分人(或者全部)分成两组.必须满足第一组中的最小AC数大于第二组中的最大AC数. 问共有多少种不同的选择方案. 思路: 简单数学.. ...
- 【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)
问题描述 使用 python websockets 模块作为Socket的服务端,发布到App Service for Linux环境后,发现Docker Container无法启动.错误消息为: 2 ...
- openssh 8.2 升级 8.3
openssh 8.2 存在安全漏洞,升级为 openssh 8.3 需要安装的包:openssh-8.3p1.tar.gz.zlib-1.2.11.tar.gz.openssl-1.1.1g.tar ...
- Arthas在线java进程诊断工具 在线调试神器
tag: java 诊断 堆栈 在线调试 耗时 死锁 arthas 阿里巴巴 Arthas (阿尔萨斯) Arthas 是 Alibaba 开源的Java诊断工具,深受开发者喜爱. 官网文档:http ...
- python实现拉普拉斯图像金字塔
一,定义 二,代码: 要求:拉普拉斯金字塔时,图像大小必须是2的n次方*2的n次方,不然会报错 1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 #高斯金 ...
- [cf461E]Appleman and a Game
考虑我的每一次添加操作,要满足:1.该串是t的子串:2.该串不能与下一次的串开头字母构成t的子串.那么,设f[i][j][k]表示拼i次,第i次填入的开头字母是j,第i+1填入的开头字母是k的最短长度 ...
- [bzoj3524]Couries
首先用到bzoj2456的做法,因为要求这个数出现次数超过了一半,如果其与不同的数两两相消的话最终一定会剩下自身(如果不保证存在可能会剩下别的,但保证存在了只会剩下自身),然后再用可持久化线段树维护即 ...
- 21天从Java转向Go之第三天——初出茅庐
名称 Go中25个关键字 只能在语法允许的地方使用,不能做为名称 break default func interface select case defer go map struct chan e ...
- 什么是CLI、GUI
就是命令行界面command-line interface,也有人称之为字符用户界面(CUI). 通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作. 因为,命令行界面的软件通常 ...