流式计算领域新霸主Flink的那些事儿

  • 时间:
  • 浏览:0
  • 来源:幸运飞艇_幸运飞艇官方

徐葳

Flink是另兩个 开源的流除理框架,它具有以下特点。

Storm是比较早的流式计算框架,很久 又突然出现了Spark Streaming和Trident,现在又突然出现了Flink这种 优秀的实时计算框架,没办法 这几种计算框架到底有什么区别呢?下面当让让我们 来全版分析一下,如表1.1所示。

从图1.2可知, Flink对底层的统统操作进行了封装,为用户提供了DataStream API和DataSet API。使用什么API还都要很方便地完成统统流数据除理任务和批数据除理 任务。

Flink入门与实战

Flink入门与实战

图1.3 Flink的3种数据传输模型

图1.1 Flink的功能形状

Flink主要应用于流式数据分析场景,目前涉及如下领域。

读者应该对Hadoop和Storm守护多多线程 有所了解,在Hadoop中实现另兩个 MapReduce都要另兩个 阶段——Map和Reduce,而在Storm中实现另兩个 Topology则都要Spout和Bolt组件。否则,否则当让让我们 想实现另兩个 Flink任务的话,也都要有这类于的逻辑。Flink中提供了十个 组件,包括DataSource、Transformation和DataSink。

Flink架构还都要分为4层,包括Deploy层、Core层、API层和Library层,如图1.2所示。

否则,你要组装另兩个 Flink Job,最少都要这十个 组件。Flink Job=DataSource+Transformation+DataSink

由图1.1可知,Flink的功能形状如下。

前面当让让我们 分析了3种实时计算框架,没办法 公司在实际操作时到底选着哪种技术框架呢?下面当让让我们 来分析一下。

本书旨在帮助读者从零完后 刚开使了了快速掌握Flink的基本原理与核心功能。本书首先介绍了Flink的基本原理和安装部署,并对Flink中的统统核心API进行了全版分析。否则配套对应的案例分析,分别使用Java代码和Scala代码实现案例。最后通过另兩个 项目演示了Flink在实际工作中的统统应用场景,帮助读者快速掌握Flink开发。

Flink项目是大数据计算领域冉冉升起的一颗新星。大数据计算引擎的发展经历了十几次 过程,从第1代的MapReduce,到第2代基于有向无环图的Tez,第3代基于内存计算的Spark,再到第4代的Flink。否则Flink还都要基于Hadoop进行开发和使用,统统Flink并非会取代Hadoop,否则和Hadoop紧密结合。Flink主要包括DataStream API、DataSet API、Table API、SQL、Graph API和FlinkML等。现在Flink都在被委托人的生态圈,涉及离线数据除理、实时数据除理、SQL操作、图计算和机器学习库等。

统统人是在2015年才听到Flink这种 词的,嘴笨 早在10008年,Flink的前身就否则是柏林理工大学的另兩个 研究性项目,在2014年这种 项目被Apache孵化器所接受后,Flink越快了 了 成为ASF(Apache Software Foundation)的顶级项目之一。截至目前,Flink的版本经过了多次更新,本书基于1.6版本写作。

图1.4 Flink和Storm的吞吐量对比

Flink在如下类型的公司中有 具体的应用。

在这里对这几种框架进行对比。

表1 流式计算框架对比

Flink主要由Java代码实现,它同時 支持实时流除理和批除理。对于Flink而言,作为另兩个 流除理框架,批数据否则流数据的另兩个 极限特例而已。此外,Flink还支持迭代计算、内存管理和守护多多线程 优化,这是它的原生形状。

官网中Flink和Storm的吞吐量对比如图1.4所示。

图1.2 Flink架构

在这里解释一下,高吞吐表示单位时间内还都要除理的数据量很大,低延迟表示数据产生完后 还都要在很短的时间内对其进行除理,也否则Flink还都要支持快速处于理海量数据。

这三种数据传输模式是另兩个 极端,对应的是流除理系统对低延迟和批除理系统对高吞吐的要求。Flink的执行引擎采用了三种十分灵活的土方式,同時 支持了这三种数据传输模型。Flink以固定的缓存块为单位进行网络数据传输,用户还都要通过设置缓存块超时值指定缓存块的传输时机。否则缓存块的超时值为0,则Flink的数据传输土方式这类于于前面所提到的流除理系统的标准模型,此时系统还都要获得最低的除理延迟;否则缓存块的超时值为无限大,则Flink的数据传输土方式这类于于前面所提到的批除理系统的标准模型,此时系统还都要获得最高的吞吐量。缓存块的超时值也还都要设置为0到无限大之间的任意值,缓存块的超时阈值越小,Flink流除理执行引擎的数据除理延迟就越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量。

在大数据除理领域,批除理与流除理一般被认为是三种截然不同的任务,另兩个 大数据框架一般会被设计为都都里能了除理其中三种任务。比如,Storm只支持流除理任务,而MapReduce、Spark只支持批除理任务。Spark Streaming是Apache Spark之上支持流除理任务的子系统,这看似是另兩个 特例,嘴笨 不然——Spark Streaming采用了三种Micro-Batch架构,即把输入的数据流切分成细粒度的Batch,并为每另兩个 Batch数据提交另兩个 批除理的Spark任务,统统Spark Streaming本质上还是基于Spark批除理系统对流式数据进行除理,和Storm等全版流式的数据除理土方式全版不同。通过灵活的执行引擎,Flink都都都里能同時 支持批除理任务与流除理任务。在执行引擎层级,流除理系统与批除理系统最大的不同在于节点间的数据传输土方式。如图1.3所示,对于另兩个 流除理系统,其节点间数据传输的标准模型是,在除理完成第一根数据后,将其序列化到缓存中,并立刻通过网络传输到下另兩个 节点,由下另兩个 节点继续除理。而对于另兩个 批除理系统,其节点间数据传输的标准模型是,在除理完成第一根数据后,将其序列化到缓存中,当缓存写满时,就持久化到本地硬盘上;在所有数据都被除理完成后,才完后 刚开使了了将其通过网络传输到下另兩个 节点。