Flink简介以及与sparkStreaming和Storm比较

Flink简介

  • Apache Flink 是一个开源的分布式,高性能,高可用,准确的流处理框架。
  • 主要由 Java 代码实现。
  • 支持实时流(stream)处理和批(batch)处理,批数据只是流数据的一个极限特例。
  • Flink原生支持了迭代计算、内存管理和程序优化。

在这里插入图片描述

Flink架构图

在这里插入图片描述

  • Deploy(部署):
    部署的话,Flink可以分为三种,分别是本地模式、集群模式、云,其中集群模式根据资源调度引擎不同又有Standalone(Flink自己的资源调度引擎)和YARN(hadoop的一个资源调度引擎)等等,
  • API:
    API大致分为两种:DataStream API(流式处理)、DataSet API(批处理)。不同的API应用场景有很大不同
  1. DataStream API:CEP(事务处理)、表格
  2. DataSet API:机器学习、图处理、表格

Flink基本组件介绍

Flink基本组件由三类组成:Data Source(数据源)、Transformations(转换操作)、Data Sink(数据落地)。
在这里插入图片描述

Flink的流式处理与批处理

  • 在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据框架一般会被设计为只能处理其中一种任务
    例如Storm只支持流处理任务,而MapReduce、Spark只支持批处理任务。Spark Streaming是Apache Spark之上支持流处理任务的子系统,看似是一个特例,其实并不是——Spark Streaming采用了一种micro-batch的架构,即把输入的数据流切分成细粒度的batch,并为每一个batch数据提交一个批处理的Spark任务,所以Spark Streaming本质上还是基于Spark批处理系统对流式数据进行处理,和Storm等完全流式的数据处理方式完全不同。

  • Flink通过灵活的执行引擎,能够同时支持批处理任务与流处理任务

  1. 在执行引擎这一层,流处理系统与批处理系统最大不同在于节点间的数据传输方式。
  2. 对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理
  3. 而对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点
  4. 这两种数据传输模式是两个极端,对应的是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求
  5. Flink的执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型
  6. Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟
  7. 如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统的标准模型,此时系统可以获得最高的吞吐量
  8. 同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量

三种数据传输模型

在这里插入图片描述
从左到右边分别是极端的流处理和批处理,第三种是Flink的数据传输模型

Flink VS Storm VS SparkStreaming

在这里插入图片描述
Flink vs Storm 对比图

在这里插入图片描述

实时框架的选择:
  1. 需要关注流数据是否需要进行状态管理
  2. At-least-once或者Exectly-once消息投递模式是否有特殊要求
  3. 对于小型独立的项目,并且需要低延迟的场景,建议使用storm
  4. 如果你的项目已经使用了spark,并且秒级别的实时处理可以满足需求的话,建议使用sparkStreaming
  5. 要求消息投递语义为 Exactly Once 的场景;数据量较大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用flink
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值