写点什么

Flink 核心组件

  • 2022-12-12
    北京
  • 本文字数:942 字

    阅读完需:约 3 分钟

Flink核心组件
1、Client

用户一般使用 Client 提交作业,比如 Flink 主目录下 bin 目录中提供的命令行工具。Client 会对用户提交的 Flink 作业进行预处理,并把作业提交到 Flink 集群上。Client 提交作业时需要配置一些必要的参数,比如使用 Standalone 集群还是 YARN 集群等。整个作业被打成了 JAR 包,DataStream API 被转换成了 JobGraph。

2、Dispatcher

Dispatcher 可以接收多个作业,每接收一个作业,Dispatcher 都会为这个作业分配一个 JobManager。Dispatcher 对外提供一个表述性状态转移(Representational State Transfer,REST)式的接口,以超文本传输协议(Hyper Text Transfer Protocal,HTTP)来对外提供服务。

3、JobManager

JobManager 是单个 Flink 作业的协调者,一个作业会有一个 JobManager 来负责。JobManager 会将 Client 提交的 JobGraph 转化为 ExecutionGraph。JobManager 会向 ResourceManager 申请必要的资源,当获取足够的资源后,JobManager 将 ExecutionGraph 以及具体的计算任务分发部署到多个 TaskManager 上。同时,JobManager 还负责管理多个 TaskManager,包括收集作业的状态信息、生成检查点、必要时进行故障恢复等。

4、ResourceManager

Flink 现在可以部署在 Standalone、YARN 或 Kubernetes 等环境上,不同环境中对计算资源的管理模式略有不同,Flink 使用一个名为 ResourceManager 的模块来统一处理资源分配上的问题。在 Flink 中,计算资源的基本单位是 TaskManager 上的任务槽位(Task Slot,简称 Slot)。ResourceManager 的职责主要是从 YARN 等资源提供方获取计算资源,当 JobManager 有计算需求时,将空闲的 Slot 分配给 JobManager。当计算任务结束时,ResourceManager 还会重新收回这些 Slot。

5、TaskManager

TaskManager 是实际负责执行计算的节点。一般地,一个 Flink 作业是分布在多个 TaskManager 上执行的,单个 TaskManager 上提供一定量的 Slot。一个 TaskManager 启动后,相关 Slot 信息会被注册到 ResourceManager 中。当某个 Flink 作业提交后,ResourceManager 会将空闲的 Slot 提供给 JobManager。JobManager 获取到空闲的 Slot 后会将具体的计算任务部署到空闲 Slot 之上,任务开始在这些 Slot 上执行。在执行过程,由于要进行数据交换,TaskManager 还要和其他 TaskManager 进行必要的数据通信。总之,TaskManager 负责具体计算任务的执行,启动时它会将 Slot 资源向 ResourceManager 注册。


发布于: 刚刚阅读数: 5
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
Flink核心组件_flink_穿过生命散发芬芳_InfoQ写作社区