组件栈
API & Libraries层
基于流处理的:CEP(复杂事件处理库)、SQL&Table库
基于批处理的:FlinkML(机器学习库)、GElly(图处理库)等
API层: DataStream API(流计算)、DataSet API(批计算)
Core层
支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务调度等。将DataStream 和 DataSet 转换成统一的可执行的Task Operator,达到在流引擎下同时处理批量计算和流计算。
Deploy层
支持本地、集群(Standalone/yarn)、云(GCE/EC2)、Kubernetes、Mesos 不同平台部署。
基本架构
Flink主要由两个组件组成Jobmanager和TaskManager,Jobmanager为master节点,TaskManager为worker(slave)节点。所有组件之间用Akka进行通信,包括任务的状态和Checkpoint触发等。
Client 客户端
通过Actor System(Akka)连接JobManager,然后将任务提交到JobManager,获取任务执行状态。
JobManager(Master)
负责整个集群的任务调度以及资源管理。获取客户端提交的任务,根据TaskManager上的TaskSlot使用情况,为提交的任务分配相应的TaskSlots资源并命令TaskManager启动从客户端中提交的任务。JobManager会触发Checkpoints,由TaskManager完成Checkpoint操作。JobManager将任务执行的信息反馈给客户端,并释放资源。
TaskManager(Worker)
负责具体的任务执行和对应任务在每个节点上资源申请与管理。TaskManager接受JobManager提交的任务,然后使用Task Slot启动task,开始执行数据处理。
参考以下资料: