flink笔记(三) flink架构及运行方式
架构图

Job Managers, Task Managers, Clients
- JobManager(Master)
- 用于协调分布式执行。它们用来调度task,协调检查点,协调失败时恢复等。
- Flink运行时至少存在一个JobManager。
- 一个高可用的运行模式会存在多个JobManager,它们其中有一个是leader,而其他的都是standby。
- TaskManager(Worker)
- 用于执行一个dataflow的task(或者特殊的subtask)、数据缓冲和data stream的交换。
- Flink运行时至少会存在一个TaskManager。
- TaskManager连接到JobManager,告知自身的可用性进而获得任务分配。
- 客户端不是运行时和程序执行的一部分。但它用于准备并发送dataflow给master,然后户端断开连接或者维持连接以等待接收计算结果。
- JobManager和TaskManager可以以如下方式中的任意一种启动:
- Standalone cluster
- Yarn
- Mesos
- Container(容器, 如 由K8S管理的Docker集群)
Standalone 模式
- 流程如上所示
- 任务提交命令:
- bin/flink run -c mainclass jar_path
- webui 提交(傻瓜式)
On Yarn 模式
两种运行模式
Yarn-session 模式
- 该模式是预先在yarn上面划分一部分资源给flink集群用,flink提交的所有任务,共用这些资源。
- 示意图
- 任务提交
- 先启动一个yarn-session,并指明分配的资源。
- 命令:
- ./yarn-session.sh -n 3 -jm 1024 -tm 1024 /opt/sxt/flinkTest.jar
- -n 容器个数
- -jm jobmanager 进程内存大小
- -tm 指明每个 taskmanager 的进程内存大小
- 启动yarn-session后,就可以提交任务了
- . /flink run -m 节点:端口 jar 文件目录
- 停止yarn上的 flink 集群
- 先找到 application_id
- 然后执行命令:
- yarn application -kill application_id
Single job 模式
该模式是每次提交任务,都会创建一个新的flink集群
任务之间互相独立,互不影响,方便管理
任务执行完成之后,flink集群也会消失
示图:

任务提交命令:
- ./flink rum -m yarn-cluster -yn 并行度 jar文件路径
- -m:
- 后面跟的是yarn-cluster,不需要指明地址。
- 这是由于Single job模式是每次提交任务会新建flink集群,所以它的jobmanager是不固定的。
- -yn:
- 指明taskmanager个数。
- 其余参数可使用:./flink -h 来查看
- -m:
- ./flink rum -m yarn-cluster -yn 并行度 jar文件路径
运行原理
flink on yarn 内部实现图

步骤1
- 当启动一个新的 Flink YARN Client会话,客户端首先会检查所请求的资源(容器和内存)是否可用。
- 之后,它会上传包含了 Flink 配置文件和 jar包到 HDFS.
步骤2
- 客户端的请求一个container资源去启动 ApplicationMaster 进程
步骤3
- ResourceManager选一台NodeManager机器启动AM。
- 注意点1:
- 因为客户端已经将配置文件和jar包作为容器的资源注册了,所以 NodeManager 会负责准备容器做一些初始化工作(例如,下载文件)。
- 一旦这些完成了,ApplicationMaster (AM) 就启动了。
- 注意点2:
- JobManager 和 AM 运行在同一个容器中。
- 一旦它们成功地启动了,AM 知道 JobManager 的地址(它自己)。
- 它会为 TaskManager 生成一个新的 Flink 配置文件(这样它们才能连上 JobManager)。
- 该文件也同样会上传到 HDFS。另外,AM 容器同时提供了 Flink 的 Web 界面服务。
步骤4
- AM 开始为 Flink 的 TaskManager 分配容器(container),在对应的nodemanager上面启动taskmanager
步骤5
- 初始化工作,从 HDFS 下载 jar 文件和修改过的配置文件。
- 一旦这些步骤完成了,Flink 就安装完成并准备接受任务了。
flink笔记(三) flink架构及运行方式的更多相关文章
- Flink学习笔记-新一代Flink计算引擎
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- Flink学习笔记:Flink Runtime
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- Flink(三)Flink开发IDEA环境搭建与测试
一.IDEA开发环境 1.pom文件设置 <properties> <maven.compiler.source>1.8</maven.compiler.source&g ...
- 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...
- 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...
- Flink 笔记(一)
简介 Flink是一个低延迟.高吞吐.统一的大数据计算引擎, Flink的计算平台可以实现毫秒级的延迟情况下,每秒钟处理上亿次的消息或者事件. 同时Flink提供了一个Exactly-once的一致性 ...
- 《从0到1学习Flink》—— Apache Flink 介绍
前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...
- 8、Flink Table API & Flink Sql API
一.概述 上图是flink的分层模型,Table API 和 SQL 处于最顶端,是 Flink 提供的高级 API 操作.Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
随机推荐
- Linux之系统优化配置
Linux系统优化配置 更新国内镜像源 国内速度快的常用更新源如下: http://mirrors.sohu.com http://mirrors.163.com [root@greymous ...
- QQ企业通知识点---ClassSerializers
Serializers 串列器 序列化器 串行器 MemoryStream 创建其支持存储区为内存的流. BinaryFormatter 以二进制格式将对象或整个连接对象图形序列化和反序列化 ...
- 【剑指Offer面试编程题】题目1513:二进制中1的个数--九度OJ
题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量.对于每个测试样例输入为一个 ...
- Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号
一.shell特殊符号.cut命令 *任意字符 [root@davery ~]# ls /tmp/*.txt/tmp/1.txt /tmp/2.txt /tmp/q.txt[root@davery ~ ...
- [经验] 项目中 session 过期后弹出的登录窗口无法登录怎么办
背景: 当session过期后, 按照 系统的设计, 会自动跳转到登录页面, 重新进行登录操作 问题: 由于进入主页后, 其他页面都是嵌入式的模板页, 所以这时的登录页面也是内嵌在index模板下的 ...
- Day9 - G - Doing Homework HDU - 1074
有n个任务,每个任务有一个截止时间,超过截止时间一天,要扣一个分.求如何安排任务,使得扣的分数最少.Input有多组测试数据.第一行一个整数表示测试数据的组数第一行一个整数n(1<=n<= ...
- 「CF741D」Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
传送门 Luogu 解题思路 考虑把22个字符状压下来,易知合法情况就是状态中之多有一个1,这个可以暴力一点判断23次. 然后后就是 dsu on the tree 了. 细节注意事项 咕咕咕 参考代 ...
- Mongo2Go 介绍
Mongo2Go(https://github.com/Mongo2Go/Mongo2Go )是最新的MongoDB二进制文件的托管包装, 它针对.NET Standard 1.6(对于.NET 4. ...
- 【Unity】鼠标划定范围然后截图~
有时候要重复用某一个场景的某一个角度,都过去好几步了结果总不能再把已经打乱的场景物体再移动回去吧.so~智慧的我完成了伟大的偷懒.截图保存,什么时候要看,直接上图片以假乱真棒棒哒~ 当然这个功能还能用 ...
- [DllImport("kernel32.dll")]
这叫引入kernel32.dll这个动态连接库. 这个动态连接库里面包含了很多WindowsAPI函数,如果你想使用这面的函数,就需要这么引入.举个例子: [DllImport("kerne ...