[Flink] 00 初识:概述、发展历程、架构

如有错误,感谢指导。

1、Data batch/flow processing、计算引擎

进入正题之前,先来理解一些常见名词,有助于了解、学习Flink。以下都是基于大数据技术领域场景下的理解:

数据处理框架(计算引擎),可以理解为是负责对系统中的数据进行计算的一个组件。

批(batch)、流(flow/stream),是两种数据传送技术,它把客户端数据分别变成一批批、一个稳定的流。正是由于数据传送呈现成一批批、连续不断的流的两个形态,所以对应产生了两种不同的计算引擎来处理数据:

  • 批处理(batch processing),主要是操作大量、有界、持久的静态数据集,并在计算过程完成后返回结果;
  • 流处理(flow processing),对连续、无界、顺序、时变的动态数据集进行处理。

在这里插入图片描述
当然,这都是人为进行的划分。重点是体会各个框架的差异、更适合的场景。没有哪一个框架可以完美地支持所有的场景,也就不可能有任何一个框架能完全取代另一个,就像 Spark 没有完全取代 Hadoop,Flink 也不可能取代 Spark。

Spark和Flink的主要差别就在于计算模型不同:

  • Spark采用了微批处理模型
  • 而Flink采用了基于操作符的连续流模型。
  • 因此,对Spark、Flink的选择实际上变成了计算模型的选择,而这种选择需要在延迟、吞吐量和可靠性等多个方面进行权衡。

现在,Flink、Spark都已发展成为混合计算框架了。

2、Flink 简介、历程

研究分布式技术的工程师们总是希望彻底发掘出分布式技术的极限。

技术发展早期,主要研究方向是速度更快、性价比更高的处理数据手段,这个方向的需求最终被 Hadoop 所解决,几乎每个人都开始使用 Hadoop 和它的生态系统来实现原有的 ETL 流程。

在这之后出现的新的数据处理需求就是处理流式数据(data in a streaming manner),这个方向的研究产生了Spark 和 Flink 这样的技术。它们支持的快速处理引擎(fast processing engines)、快速缩放能力(the ability to scale in no time)以及机器学习库和图处理库等特性正在将这些技术推广到开发人员社区。

Flink 发展历程:

  • 2008:柏林理工大学一个研究性项目Stratosphere,Next Generation Big Data Analytics Platform(目标是建立下一代大数据分析引擎);
  • 2014-04-16,Stratosphere成为Apache孵化项目,从Stratosphere 0.6开始,正式更名为Flink。由Java语言编写
  • 2014-08-26,Flink 0.6发布;
  • 2014-11-04,Flink 0.7.0发布,介绍了最重要的特性:Streaming API;
  • 2016-03-08,Flink 1.0.0,支持Scala;
  • 2016-08-08,Flink 1.1.0;
  • 2017-02-06,Flink 1.2.0;
  • 2017-11-29,Flink 1.4.0;
  • 2018-05-25,Flink 1.5.0;
  • 2018-08-08,Flink 1.6.0;
  • 2018-11-30,Flink 1.7.0;
  • 2019-02-15,Flink 1.7.2(目前(2019-05-16)),官网最新版本。

Flink 在大数据技术中的定位/地位:
在这里插入图片描述
打开Flink官网,醒目的一句话:Stateful Computations over Data Streams,译作 在数据流上的有状态计算。

再打开阿里巴巴-Flink中文网,醒目的文字:统一的大数据分析和流计算引擎、下一代大数据处理引擎。使用Flink的成功企业有 BAT、华为、滴滴、美团、饿了么、携程、360、顺丰、爱奇艺、UBER等。

其中,在Flink网有两个keyword引人注意:Stateful、Streams

  • Stateful:有状态计算是最近几年来越来越被用户需求的一个功能。如 一个网站一天内访问UV数,那么这个UV数便为状态。Flink提供了内置的对状态的一致性的处理,即如果任务发生了Failover,其状态不会丢失、不会被多算少算,同时提供了非常高的性能。
  • Streams:Flink认为有界数据集是无界数据流的一种特例,所以说有界数据集也是一种数据流,事件流也是一种数据流。Everything is streams,即Flink可以用来处理任何的数据,可以支持批处理、流处理、AI、MachineLearning等等。

总之,Flink 一个分布式大数据处理的 纯内存(并在内存管理方面做了大量优化)式计算引擎,可对有限数据流和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。

适用场景:选择它就要让它做最擅长的事情!!!

  • 流数据处理:最主要的场景。实时地处理一些实时数据流,实时地产生数据的结果。实时的统计分析或异常检测,做一些基于事件的应用,如滴滴通过Flink CEP实现实时监测用户及司机的行为流来判断用户或司机的行为是否正当。
  • 批处理:处理静态的数据集、历史的数据集。Flink认为批数据只是流数据的一个极限特例而已,它会将所有任务当成流来处理,这也是其最大的特点;
  • 还支持本地的快速迭代,以及一些环形的迭代任务;

3、Flink 架构

Flink 1.X版本 包含了各种组件,可分为:

  • 部署:Flink支持local模式、集群模式(standalone集群或者Yarn集群)、云端部署;
  • Flink core(runtime):是主要的数据处理引擎,它以JobGraph形式的API接收程序,JobGraph是一个简单的并行数据流,包含一系列的tasks,每个task包含了输入和输出(source和sink例外);
  • APIs
    • DataStream API和DataSet API是流处理和批处理的应用程序接口,当程序在编译时,生成JobGraph。编译完成后,根据API的不同,优化器(批或流)会生成不同的执行计划。根据部署方式的不同,优化后的JobGraph被提交给了executors去执行;
    • 最底层的ProcessFunction,它能够提供非常灵活的功能,它能够访问各种各样的State,用来注册一些timer,利用timer回调的机制能够实现一些基于事件驱动的一些应用
  • 各种库:提供了用于机器学习、图计算、Table API等库,同时Flink也支持复杂的CEP处理和警告。
    在这里插入图片描述

4、开发指南

在这里插入图片描述

1、【资料合集】Apache Flink 精选PDF下载
2、Apache Flink官方文档中文翻译计划
3、Apche Flink官网
4、Apache中文文档
5、Apache Flink最详细的概述:对各个API的历史变迁写得的非常好,值得一看。
6、Flink 工作原理
7、深入理解Apache Flink核心技术

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值