1.架构设计
分层设计说明(相关术语解释)
物理部署层-deploy层
负责解决Flink的部署模式问题,
支持多种部署模式:本地部署、集群部署(Standalone/Yarn/Mesos)、云(GCE/EC2)以及kubernetes。
通过该层支持不同平台的部署,用户可以根据自身场景和需求选择使用对应的部署模式。
Runtime核心层
是Flink分布式计算框架的核心实现层,负责对上层不同接口提供基础服务。
支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换以及任务调度等。
将DataStream和DataSet转成统一的可执行的Task Operator,达到在流式计算引擎下同时处理批量计算和流式计算的目的。
API & Libraries层
负责更好的开发用户体验,包括易用性、开发效率、执行效率、状态管理等方面。
Flink同时提供了支撑流计算和批处理的接口,同时在这基础上抽象出不同的应用类型的组件库,如:
基于流处理的CEP(复杂事件处理库)
Table & Sql库
基于批处理的FlinkML(机器学习库)
图处理库(Gelly)
API层包括两部分
流计算应用的DataStream API
批处理应用的DataSet API
统一的API,方便用于直接操作状态和时间等底层数据
提供了丰富的数据处理高级API,例如Map、FllatMap操作等,
并提供了比较低级的Process Function API
2、运行模式
运模模式核心区分点
集群生命周期和资源隔离保证
应用程序的main()方法是在客户端还是在集群上执行
所有模式分类说明
本地运行模式
standalone模式
集群运行模式
经常是指flink on yarn集群模式,yarn也可以换成mesos,Kubernetes(k8s)等资源管理平台替换。
共3种
session模式
per-job模式
application模式
本地运行模式
运行过程:一个机器启动一个进程的多线程来模拟分布式计算。
主要用于代码测试
standalone模式
运行过程:完全独立的Flink集群的模式,各个环节均Flink自己搞定。并没有yarn、mesos的统一资源调度平台。
主要是只有纯Flink纯计算的场景,商用场景极少。