Flink简介

批处理与流处理

        当数据源呈流式出现时,无论批计算或微批计算(如spark streaming),故海量数据处理需要实现实时处理,如早期的storm实现了流处理,但无法实现数据的精准一致性,且不能做到高吞吐,故storm已经淘汰,flink作为新的流式计算/实时计算引擎成为主流。

Flink简介

        2010年由柏林工业大学等三所德国大学发起的‘Stratosphere: information Management on the Cloud’ 项目,该项目代码在2014年被贡献给Apache,2014年12月,Aparche推广flink作为商业项目,2015年9月发布第一个稳定版本0.9。FLink在国内的应用十分广泛,头部互联网/零售/金融等公司均使用flink,并为Apache贡献了超过60%的代码,故Flink有官方中文页面

Flink官网定义

Flink是一个框架和分布式处理引擎, 用于再无边界有边界的数据流上进行有状态的计算,flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算

Apache flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

有界流(bounded)和无界流(unbounded)

  • 无界流:定义了流的开始,但不定义流的结束,即该数据流会无休止的产生数据。无界流的数据需要持续处理,即数据被社区后需要立即处理。

    处理无界流通常要求以特定顺序社区事件,例如事件发生的顺序,以便可以推断结果的完整性。

  • 有界流:有定义流的开始和流的结束,有界流可以在摄取所有数据后再进行计算,故有界流不需要有序摄取(通常称为批处理 *batch processing

    Flink可处理有界流和无界流数据集(data set),即 Flink 也可做批处理,但性能上与 Spark 区别不大

有状态的计算

  • Flink默认有状态计算 != spark streaming某些算子(比如聚合和窗口)支持有状态的计算,需要手动设置

  • Flink有状态计算原理:

摄取数据时,会结合当前本地内存中存储的状态进行处理和计算,后可能需要更新当前状态,然后输出结果,即称为有状态的计算

*个人理解:流处理需要实时处理每一个事件,不能

状态保存在本地内存中,系统错误或中断时会丢失 ==> 结合checkpoint机制进行备份

应用场景

绝大多数的业务场景都是无界流,即没有结束状态,会持续不断地产生,

Flink的特点和优势

  • 高吞吐、低延迟、高性能

  • 事件时间概念:Event Time(支持三种时间:event time,process time 处理时间,ingestion time 事件摄取时间)(详见后续)

  • 支持有状态的计算(*见第5点)

  • 支持灵活的窗口机制(window)(详见后续)

  • 基于轻量级分布式快照(Checkpoint)实现(详见后续)

  • 基于JVM实现独立的内存管理

        Flink单独申请几块内存用做内存池,Flink任务均想内存池申请内存,归还内存,可以减少频繁的向jvm申请内存,及避免内存碎片。 

  • Save point机制

    一段时间内应用的种植有可能导致数据丢失或计算结果错误,flink通过save point技术将任务执行的快照保留在存储介质上,任务重启时可直接从实现保存的save point回复原来的计算状态,使任务继续进行。

    Save point与checkpoint有类似之处,save point需要手动开启,一般用作可预见性的系统中断恢复,如升级等,check point一般用作不可预见的系统中断的容灾或备份。

流计算框架对比

产品模型API保证次数容错机制状态管理延时吞吐量
StormNative (数据进入立即处理-流处理)组合式(基础API)at-least-oncerecord ACK(回滚机制)
TridentMicro-Batching (微批处理)组合式exactly-oncerecord ACK基于操作
Spark StreamingMicro-Batching声明式(提供封装后的高阶函数,如count)exactly-onceRDD Checkpoint (基于RDD做checkpoint)基于Dstream
FlinkNative声明式exactly-onceCheckPoint (flink特有的快照)所有操作

*Flink会将任务分成小任务处理,内存充足是吞吐量很高

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值