查看域名之前做的网站,浏览有关小城镇建设的网站 记录,潍坊市住房和城乡建设局网站,新手淘宝客在百度推广网站么做Flink 是构建在数据流之上的一款有状态的流计算框架#xff0c;通常被人们称为第三代大数据分析方案
第一代大数据处理方案#xff1a;基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 #xff0c;两套独立的计算引擎#xff0c;难度大#xff08;2014年9月#x…Flink 是构建在数据流之上的一款有状态的流计算框架通常被人们称为第三代大数据分析方案
第一代大数据处理方案基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 两套独立的计算引擎难度大2014年9月
第二代大数据处理方案Spark RDD 静态批处理、Spark StreamingDStream实时流计算实时性差统一的计算引擎难度小2014年2月
第三代大数据分析方案Flink DataSet 批处理框架、Apache Flink DataStream 流处理框架2014年12月
可以看出Spark和Flink几乎同时诞生但是Flink之所以成为第三代大数据处理方案主要是因为早期人们对大数据分析的认知不够深刻或者业务场景大都局限在批处理领域从而导致了Flink的发展相比于Spark较为缓慢直到2017年人们才开始慢慢将批处理 转向流处理
更多介绍https://blog.csdn.net/weixin_38231448/article/details/100062961
流计算场景实时计算领域、系统监控、舆情监控、交通预测、国家电网、疾病预测、银行/金融风控等领域
Spark VS Flink
Flink的核心是一个流式的数据流执行引擎针对数据流的分布式计算它提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎Flink提供了诸多更高抽象层的API以便用户编写分布式任务例如
DataSet API对静态数据进行批处理操作将静态数据抽象成分布式的数据集用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理支持Java、Scala和Python语言。
DataStream API对数据流进行流处理操作将流式的数据抽象成分布式的数据流用户可以方便地对分布式数据流进行各种操作支持Java和Scala语言。
Table API对结构化数据进行查询操作将结构化数据抽象成关系表并通过类SQL的DSL对关系表进行各种查询操作支持Java和Scala语言。
此外Flink还针对特定的应用领域提供了领域库例如
Flink MLFlink的机器学习库提供了机器学习Pipelines API并实现了多种机器学习算法。
GellyFlink的图计算库提供了图计算的相关API及多种图计算的算法实现。
Flink 架构
Flink概念
Tasks and Operator Chains阶段划分
对于Flink分布式任务的执行Flink尝试根据任务计算的并行度将若干个操作符连接成一个任务Task相当于Spark框架中的阶段-Stage一个Flink计算任务通常会被拆分成若干个Task阶段每一个Task都有自己的并行度每一个并行度表示一个线程SubTask。 Task等价于Spark任务中的StageOperator ChainFlink通过Operator Chain方式实现Task划分有点类似于Spark的宽窄依赖Operator Chain方式有两种forward、hash | rebalance
Job Managers、Task Managers、Clients
JobManagersMaster - 协调并行计算任务负责调度Task、协调CheckPoint以及故障恢复它等价于Spark中的MasterDriver。 There is always at least one Job Manager. A high-availability setup will have multiple JobManagers, one of which one is always the leader, and the others are standby. TaskManagersSlaves- 真正负责Task划分的执行节点执行SubTask或线程同时需要向JobManagers汇报节点状态以及工作负荷。
Clients - 与Spark不同Client并不是集群计算的一部分它只负责将任务Dataflow类似Spark DAG图提交给JobManager任务提交完成可以退出而Spark中的Client被称为Driver负责生产DAG并且监控整个任务的执行过程和故障恢复。
Task Slots and Resources
每个WorkerTaskManager是一个JVM进程可以执行一个或多个子任务Thread或SubTask为了控制Woker能够接受多少个任务Woker具有所谓的Task Slot至少一个Task Slot。
每个Task Slot代表TaskManager资源的固定子集。例如具有3个Task Slot的TaskManager则每个Task Slot表示占用当前TaskManager进程1/3的内存每个Job在启动时都有自己的Task Slot数目固定这样通过Task Slot的划分就可以避免不同Job的SubTask之间竞争内存资源以下表示一个Job获取6个Task Slot但是仅仅只有5个线程3个Task。
在默认情况下来自同一个Job的不同Task阶段的SubTask可以共享一个Task SlotJob计算所需Task Slot的个数由Task中的最大并行度所决定。
Flink集群所需的任务槽与作业中使用的最高并行度恰好一样多。更容易获得更好的资源利用率。如果没有Task Slot共享则非密集型source子任务将阻塞与资源密集型window子任务一样多的资源通过Task Slot共享可以将任务并行度由2增加到6从而得到如下资源分配 参考https://ci.apache.org/projects/flink/flink-docs-release-1.9/concepts/runtime.html