Apache 流框架 Flink,Spark Streaming,Storm对比分析(一) (2)

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

 

Deployment层

该层主要涉及了Flink的部署模式,Flink支持多种部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)。Standalone 部署模式与Spark类似,这里,我们看一下Flink on YARN的部署模式

 

Runtime层

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

 

API层

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

 

Libraries层

该层也可以称为Flink应用框架层,根据API层的划分,在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理 和面向批处理两类。面向流处理支持:CEP(复杂事件处理)、基于SQL-like的操作(基于Table的关系操作);面向批处理支持: FlinkML(机器学习库)、Gelly(图处理)。

 

从官网中我们可以看到,对于Flink一个最重要的设计就是Batch和Streaming共同使用同一个处理引擎,批处理应用可以以一种特 殊的流处理应用高效地运行。

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

这里面会有一个问题,就是Batch和Streaming是如何使用同一个处理引擎进行处理的。

 

1.4 Batch和Streaming是如何使用同一个处理引擎。

下面将从代码的角度去解释Batch和Streaming是如何使用同一处理引擎的。首先从Flink测试用例来区分两者的区别。

Batch WordCount Examples

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

Streaming WordCount Examples

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

Batch和Streaming采用的不同的ExecutionEnviroment,对于ExecutionEnviroment来说读到的源数据是一个DataSet,而 StreamExecutionEnviroment的源数据来说则是一个DataStream。

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

接着我们追踪下Batch的从Optimzer到JobGgraph的流程,这里如果是Local模式构造的是LocalPlanExecutor,这里我们只介绍 Remote模式,此处的executor为RemotePlanExecutor

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

最终会调用ClusterClient的run方法将我们的应用提交上去,run方法的第一步就是获取jobGraph,这个是client端的操作,client 会将jobGraph提交给JobManager转化为ExecutionGraph。Batch和streaming不同之处就是在获取JobGraph上面。

Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfxpj.html