flink笔记(三) flink架构及运行方式
2024-09-01 10:39:16
架构图
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 就安装完成并准备接受任务了。
最新文章
- Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1
- 记一次联想A820t救砖线刷
- 关于git 操作
- RTC,登陆后添加权限值
- 使用dedecms中常见错误提示及解决办法(一)
- Redis做消息队列文章两篇
- Linux lsof详解
- 【CC评网】2013.第38周 要阅读 要有好工具
- laravel小抄
- javascript日期格式化方法汇总
- 在Ubuntu上升级SQLite,并让Python使用新版SQLite
- 关于VXLAN的认识-----基础知识
- 把本地项目放进新建的仓库(idea)
- 2017NOIP游记
- oj练习
- [转]Subdirectory Checkouts with git sparse-checkout
- nginx模块学习
- Python学习札记(三十六) 面向对象编程 Object Oriented Program 7 __slots__
- IOS多选单选相册图片
- verilog if语句
热门文章
- 三 Spring对于延迟加载问题的解决
- Windows驱动开发-Device结构体
- java学习-初级入门-面向对象⑥-类与对象-静态static
- docker学习笔记-05:DockerFile解析
- 搭建solr集群的时候出现 ./zkcli.sh:行13: unzip: 未找到命令
- Dom4j 使用简介(全而好的文章)
- CF 1198 A. MP3 模拟+滑动窗口
- Ubuntu 16.04.4下安装apache服务
- Linux游戏性能再获提升
- Oracle修改密码