01、flink的原理和安装部署

本文主要讲解flink的基础理论内容,如JobManager,TaskManager是什么,以及常见的Flink集群部署方式,以及flink中常见的一些概念,还有它的运行逻辑

01. JobManager

JobManager相当于是Flin集群的Master节点,它主要负责对Work节点(TaskManagger)资源管理,job的协调查询,job的划分,这些功能主要由以下三个组件完成

  • ResourceManager:它主要实现Flink的资源管理功能,如根据不同的计算环境提供不同的资源分配策略,如在Standalone环境中它负责实现申请启动TaskManager并获取Slot的资源信息以便后面分配Task
  • Dispatcher:提供对外的REST接口实现Flink执行信息的查询,同时也会为每个job对应的的JobMaster,并分发和执行JobGraph
  • JobMaster:它负责管理整个job的生命周期,如分布式快照checkpoints的生成。并把抽象的JobGraph通过配置和优化生成ExecutionGraph,最终把ExecutionGraph中的Task分发给TaskManager执行

02. TaskManager

TaskManager主要是向Flink集群提供运行Task的slot槽,并管理运行在slot槽中的Task

03. Flink中相关概念的含义

flink中任务跑起来之后会有这些名字需要弄清楚,并行度,分区,算子链,taskslot,task,subTask

  • Task: 相当于Spark中的Stage,一个job中根据是否发生分区的变化(主要是指产生shuffle的操作:上游分区的数据会分成若干份,被拉去到下游的不同分区)把job切分成不同的Task

  • 算子链: 算子链由若干个能划分成一个Task的算子组成

  • TaskSlot: TaskSlot代表可以运行Task的一组资源槽,分布在各个TaskManager进程中

  • 并行度,分区,SubTask: 并行度,分区和SubTask在flink中都表示相近的意思,都代表当下task的并发程度,也可以看作是一个运行线程

    其中需要的几点如下,其中一点是,Flink任务TaskSlot的数量要大于等于这个job中各算子并行度最大的那个算子的并行度,否则任务跑不起来,还有一点是各个Task需要运行在一个TaskSlot比如一个job有3个Task,那这三个Task就应该被分配到同一个slot中运行,这样做的目的是为了减少各个Task之间数据交换的成本,如下图所示
    在这里插入图片描述

04. Flink on yarn的运行原理

flink on yanr是大多数公司选择的一种运行方式,它的优势是借助yarn的资源管理能力,通过yarn能更灵活把控job的资源的使用,同时也大大的减轻了公司大数据组件的维护压力,如下是on yarn的运行流程

  • client端提交任务把对应的jar包和配置文件上传到hdfs中–如果是per-job模式,job任务的main函数的运行会放在client端运行,如果是application模式,main函数的执行会放在jobmanager端
  • 再向yarn申请contain运行JobManager,JM启动接着运行Dispatch,Resourcemanager组件
  • Dispatch根据提交的application为每个job启动JobMaster,并把JobGraph提交给JobMaster
  • JobMaster把JobGraph通过配置和优化解析成ExecutionGraph,然后向yarn申请需要的资源
  • yarn根据所需资源启动Taskmanager,并向RM注册Slot信息,RM在对应的TM上划分好Slot资源,同时TM向JobMaster提交 slot资源信息
  • 至此Flink的环境已经准备好了,JobMstar把ExecutionGraph中划分好的Task发送到TM中开始运行

在这里插入图片描述

06. Flink on Yarn 模式下的HA模式

HA模式主要是针对JobManager,每个job集群启动的时候JM但是单点的,如果挂了,对应的job就会失败,所有JM的HA是有必要配置的,flink on yarn模式下,它的HA本质上来说就是让yarn的application进行重试即可,但是在重试时需要zookeeper来协调JM失败后的切换

  • yarn application的重试配置
    在Hadoop的所以节点的yarn-site.xml文件中配置yarn.resourcemanager.am.max-attempts的次数,默认是2次
  • 在任务提交的客户端节点上找到flink-conf.yaml文件,配置JM重试的协调者zookeeper,具体的如配置ZK的集群地址,JM失败重试后所有元数据存储地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值