Flink分层架构

本文深入解析Apache Flink的架构设计,包括其分层组件栈、部署模式、运行机制及API支持。从底层的分布式流式数据引擎到上层的复杂事件处理、机器学习库,全面覆盖Flink的核心功能与应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 Flink结构与支持

Flink是一个分层架构的系统,不同层的栈建立在其下层基础上,并且每一层所包含的组件都提供了特定的抽象,用来服务于上层组件。Flink分层的组件栈如下图所示(从下至上):
在这里插入图片描述

  1. 部署:Flink 支持本地运行、能在独立集群或者在被 YARN 或 Mesos 管理的集群上运行, 也能部署在云上。
  2. 运行:Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理。
  3. API:DataStream、DataSet、Table、SQL API。
  4. 扩展库:Flink 还包括用于复杂事件处理,机器学习,图形处理和 Apache Storm 兼容性的专用代码库。
API支持Libs支持整合支持
DataStream复杂事件处理(CEP)Flink on YARN、Storm
DataSet机器学习(FlinkML)HDFS、Tachyon、S3、XtreemFS
Table图分析处理(Gelly)Kafka、RabbitMQ
Streaming关系数据处理(Table)HBase、ElasticSearch
2.2 Deployment调度层

该层主要涉及了Flink的部署模式,Flink支持多种部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)。Standalone部署模式与Spark类似,Flink on YARN的部署模式如下图所示:
在这里插入图片描述了解YARN的话,对上图的原理非常熟悉,实际Flink也实现了满足在YARN集群上运行的各个组件:Flink YARN Client负责与YARN RM通信协商资源请求,Flink JobManager和Flink TaskManager分别申请到Container去运行各自的进程。通过上图可以看到,YARN AM与Flink JobManager在同一个Container中,这样AM可以知道Flink JobManager的地址,从而AM可以申请Container去启动Flink TaskManager。待Flink成功运行在YARN集群上,Flink YARN Client就可以提交Flink Job到Flink JobManager,并进行后续的映射、调度和计算处理。

2.3 Runtime层

Runtime层提供了支持Flink计算的全部核心实现,比如支持分布式Stream处理、JobGraph到ExecutionGraph的映射、调度等等,为上层API层提供基础服务。

2.4 API层

API层主要实现了面向无界Stream的流处理和面向Batch的批处理API,其中面向流处理对应DataStream API,面向批处理对应DataSet API。

2.5 Libraries层

Libraries层也可以称为Flink应用框架层,根据API层的划分,在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理和面向批处理两类。

面向流处理支持:CEP(复杂事件处理)、基于SQL-like的操作(基于Table的关系操作)

面向批处理支持:FlinkML(机器学习库)、Gelly(图处理)

  1. 运行时层以JobGraph形式接收程序。JobGraph即为一个一般化的并行数据流图(data flow),它拥有任意数量的Task来接收和产生data stream。
  2. DataStream API和DataSet API都会使用单独编译的处理方式生成JobGraph。DataSet API使用optimizer优化器来决定针对程序的优化方法,而DataStream API则使用stream builder流生成器来完成该任务。
  3. 在执行JobGraph时,Flink提供了多种候选部署方案(如local,remote,YARN等)。
  4. Flink附随了一些产生DataSet或DataStream API程序的的类库和API:处理逻辑表查询的Table,机器学习的FlinkML,图像处理的Gelly,复杂事件处理的CEP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值