美文网首页
第一章 初识flink - 大数据处理引擎 Apache Fli

第一章 初识flink - 大数据处理引擎 Apache Fli

作者: 0人间四月天O | 来源:发表于2020-06-19 20:24 被阅读0次

flink发展历史

在 2008 年,Flink 的前身已经是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 ASF(Apache Software Foundation)的顶级项目之一

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。目前主要还是依靠开源社区的贡献而发展。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。

flink架构介绍

从部署上讲,Flink支持三种模式 :

  • local模式
  • 集群模式(standalone集群或者Yarn集群)
  • 云端部署

两种应用程序接口:

  • DataStream API (流处理)
  • DataSet API (批处理)

当程序在编译时,生成JobGraph。编译完成后,根据API的不同,优化器(批或流)会生成不同的执行计划。根据部署方式的不同,优化后的JobGraph被提交给了executors去执行。

image.png

flink作业调度模型

如图所示,Client、JobManager 和 TaskManager。
Client 用来提交任务给 JobManager,JobManager 分发任务给 TaskManager 去执行,然后 TaskManager 会心跳的汇报任务状态。

image.png

flink框架特性

  • 高性能
    支持高吞吐、低延迟、高性能的流处理。

  • 有状态计算的Exactly-once语义
    有状态意味着程序可以保持已经处理过的数据,同时Flink的checkpoint机制可以确保在发生故障时应用程序状态的一致性语义。

  • 高度灵活的窗口
    Flink支持数据驱动的窗口,这意味着我们可以基于时间(event time或processing time)、count和session来构建窗口。

  • 容错机制
    它使得系统既能保持高的吞吐率又能保证exactly-once的一致性,使Flink能从零数据丢失的故障中恢复,通过分布式状态快照(Snapshot)实现

  • 内存管理
    Flink在JVM内部进行内存的自我管理,使得其独立于java本身的垃圾回收机制。当处理hash、index、caching和sorting时,Flink自我的内存管理方式使得这些操作很高效。但是,目前自我的内存管理只在批处理中实现,流处理程序并未使用。

  • 优化器
    避免特定情况下Shuffle、排序等昂贵操作,中间结果进行缓存,确保避免过度的磁盘IO。

  • 批流统一
    运行时同时支持流计算和批计算两套API。
    Flink中的流处理优先原则,认为批处理是流处理的一种特殊情况。

  • Libraries库
    Flink提供了用于机器学习、图计算、Table API等库,同时Flink也支持复杂的CEP处理和警告。

  • 事件时间
    Flink支持Event Time语义的处理,这有助于处理流计算中的乱序问题,有些数据也许会迟到,我们可以通过基于event time、count、session的窗口来处于这样的场景。

  • savepoints 状态版本控制
    可以将应用的运行状态保存下来,使得在升级应用或处理历史数据时,而不会丢失状态和确保宕机时间最小

  • 反压
    支持具有反压(Backpressure)功能的持续流模型

相关文章

网友评论

      本文标题:第一章 初识flink - 大数据处理引擎 Apache Fli

      本文链接:https://www.haomeiwen.com/subject/ihvbxktx.html