本文主要介绍内容
一、flink分层架构
高级API层:包含机器学习及Flink SQL API等库。对批处理和流处理进行了统一。
API层:主要包含 Flink 的流处理API 和批处理API
执行引擎:Flink 的执行处理,Flink 的执行引擎基于流处理实现。
资源层:Flink 任务执行的物理资源,主要有 本地(JVM) , 集群(yarn),云端(GCE/EC2)等,flink1.11以上版本也支持k8s部署。
二、flink系统架构
Client:Flink Client 用于与JobManger建立连接,进行Flink 任务的提交。Client会将Flink任务组装为一个 JobGraph并进行提交。一个JobGraph是一个flink dataflow,其中包含了一个Flink程序的:JobID、Job名称、配置信息、一组JobVertex等。
JobManger:Flink系统协调者,负责接收job任务并调度job的多个task执行。同时负责job信息的收集和管理TaskManger。
TaskManger:负责执行计算的Worker,同时进行所在节点的资源管理(包括内存,cup,网络),启动时向JobManger汇报资源信息
三、flink任务部署流程
flink目前支持本地,yarn,k8s等多种部署方案。
3.1、flink任务yarn部署流程
flink yarn client 负责与yarn RM 进行通信及资源申请
jobManger 和taskManger 分别申请Container 资源运行各自的进程。
jobManger 和yarn AM 属于同一个Container中,从而 yarn AM 可进行申请Container及调度TaskManger
HDFS 用于数据的存储,如checkpoints, savepoints 等数据