跳到主要内容

01、Flink 基础概念

1、Flink是什么?

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算 (官网解释) 用松鼠logo的原因:希望这个项目(Flink)能做到快速灵活的大数据的处理 ,Flink在德语里面表示 快速 灵巧 这玩意是德国的

Flink应用场景

电商和市场营销: 实时报表|广告投放|实时推荐 物流配送及服务: 订单状态跟踪|信息推送 物联网: 实时数据采集|实时报警 银行和金融业: 实时结算|风险检测

2、为什么要用Flink

批处理和流处理
流数据更真实的反映了我们的生活方式
我们的目标:

  • 低延迟
  • 高吞吐
  • 结果的准确性和良好的容错性

3.流处理的发展和演变

3.1 传统数据处理结构

事务处理(比如后台管理系统) 计算层 管理层 OLTP
分析处理 (数据量可以很大,但是不能实时 HIVE) OLAP

3.2 流处理的演变

Lambda架构 (第二代)
用两套系统,同时保证低延迟和结果准确

  • 批处理
  • 流处理

3.3 新一代流处理器---Flink

核心特点

  • 高吞吐、低延迟
  • 结果的正确性 (时间语义 事件时间 )
  • 精确一次(exacly-once)的状态一致性保证
  • 可以与众多常用存储系统链接
  • 高可用、支持动态扩展

应用场景

  • 事件驱动型应用
  • 数据分析型应用
  • 数据管道型应用

4.Flink的主要特点

分层API

越顶层越抽象,表达含义越简明,使用越方便
越底层越具体,表达能力越丰富,使用越灵活

SQL  最高层语言
Table API  声明式领域专用语言 
DataStream/DataSetAPI  核心APls  --> 重要
有状态流处理  底层APls   process function  (理论上啥都能做 相当于自定义处理函数  自定义API)

特点总结:

  • 低延迟
  • 高吞吐
  • 高容错
  • 结果正确
  • 语义化窗口
  • 易用的API

5.Flink 与 Spark Streaming区别

5.1数据处理架构不同

Spark 适合处理批次数据

输入数据流 ->  SparkStreaming  ->  ‘微批次’数据  -> Spark引擎   --> 处理后”微批次“数据

Flink 适合处理流数据

有界数据流
无界数据流

5.2 数据模型不同

  • Spark采用RDD模型。Spark Streaming的DStream实际上也就是一组组小批数据RDD的集合
  • Flink基本数据模型是数据流,以及事件(Event)序列

5.3 运行时架构不同

  • Spark是批计算,将DAG划分为不同的Stage,一个完成后才可以计算下一个
  • Flink是标准的流执行模式。一个事件在一个节点处理完后可以直接发往下一个节点进行处理