赞
踩
在Flink整个软件架构体系中,遵循了分层的架构设计理念,在降低系统耦合度的同时也为上层用户构建Flink应用提供了丰富且友好的接口。从上图可以看出Flink的架构体系基本上可以分为以下三层
作为分布式数据处理框架,Flink同时提供了支持流计算和批计算的接口,同时在此基础之上抽象出不同的应用类型的组件库,如基于流处理的CEP(复杂事件处理库)、SQL&Table库和基于批处理的FlinkML(机器学习库)、Gelly(图处理库)等。
API层包括构建流计算应用的DataStream API和批计算应用的DataSet API,两者都提供给用户丰富的数据处理高级API,例如Map、FlatMap操作等,同时也提供比较低级的Process Function API,用户可以直接操作状态和时间等底层数据。
该层主要负责对上层不同接口提供基础服务,也是Flink分布式计算框架的核心实现层,支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务调度等。
该层主要涉及Flink的部署模式,目前Flink支持多种部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)、Kubenetes。Flink能够通过该层能够支持不同的部署,用户可以根据需要选择使用对应的部署模式
Flink系统主要由以下四个组件组成
Flink本身是用Java和Scala实现的,因此所有组件都基于JVM(Java虚拟机)运行。
Flink遵循Master-Slave(主从)架构设计原则,JobManager为Master节点,TaskManager为Slave节点,并且所有组件之间的通信都借助Akka,包括任务的状态以及CheckPoint(检查点)触发等信息。
Dispatcher在会跨多个作业运行,它提供了一个REST接口来让我们提交需要执行的应用,一旦某个应用提交执行,则Dispatcher会启动一个JobManager并将应用转交给它。
REST接口意味着Dispatcher这一集群的HTTP入口可以受到防火墙的保护。
Dispatcher同时还会启动一个Web UI,用来展示和监控有关作业执行的信息。
Dispatcher并不是必需的组件,某些应用提交执行的方式可能用不到Dispatcher。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。