01.Flink为什么这么火

2020年,在整个大数据领域,Flink可算是火得一塌糊,不但将阿里Blink中的大部分特性merge到社区的Flink中,使得Flink在流式实时计算领域更是一骑绝尘,让其他实时计算框架只能望其项背,目前Flink根本经看不到其他的对手!同时Flink新版本又完美的兼容Hive,使得Flink在离线计算也快马加鞭,飞速赶超,完美实现批流统一,甚至很多有人称2020年为批流统一元年!

该Flink系列课程特点

  • 使用Flink最新版本1.12,讲解Flink最新特性
  • 使用java语言开发,同时兼顾scala
  • 理论结合实践,深入源码,不但搞定编码,还要知其所以然
  • 结合生产中遇到的问题,能在工作解决实际的问题
  • 结合面试问题,搞定面试

一、什么是Flink

  • Flink简介
1.Flink为什么这么火"

Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。

  • Flink的历史

早在 2008 年,Flink 的前身已经是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 ASF(Apache Software Foundation)的顶级项目之一。

Flink的商业公司 Data Artisans,位于柏林的,公司成立于2014年,共获得两轮融资共计650万欧。该公司旨在为企业提供大规模数据处理解决方案,使企业可以管理和部署实时数据,实时反馈数据,做更快、更精准的商业决策。目前,ING, Netflix 和 Uber 等企业都通过 Data Artisans 的 Apache Flink 平台部署大规模分布式应用,如实时数据分析、机器学习、搜索、排序推荐和欺诈风险等。

2019年1月8日,阿里巴巴以 9000 万欧元收购该公司!

1.Flink为什么这么火"

二、Flink的特点

  • 批流统一
  • 支持高吞吐、低延迟、高性能的流处
  • 支持带有事件时间的窗口(Window)操作
  • 支持有状态计算的Exactly-once语义
  • 支持高度灵活的窗口(Window)操作,支持基于time、count、session窗口操作
  • 支持具有Backpressure功能的持续流模型
  • 支持基于轻量级分布式快照(Snapshot)实现的容错
  • 支持迭代计算
  • Flink在JVM内部实现了自己的内存管理
  • 支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存

三、传统Lambda架构的存在的问题

1.Flink为什么这么火"
  • 冗余存储
    数据将会存储在多个系统中,增加冗余存粗。
  • 维护成本高
    每个系统的数据格式不一致,数据需要做转换,增加维护成本,尤其是当业务到达一定量级时,维护成本剧增。
  • 学习成本高
    多个系统之前需要完全打通,不同的产品有不同的开发方式,尤其是针对新人来说,需要投入更多的精力去学习多种系统,增加学习成本。

四、Flink与其他框架的对比

框架优点缺点
Storm低延迟吞吐量低、不能保证exactly-once、编程API不丰富
Spark Streaming吞吐量高、可以保证exactly-once、编程API丰富延迟较高
Flink低延迟、吞吐量高、可以保证exactly-once、编程API丰富快速迭代中,API变化比较快
1.Flink为什么这么火"
1.Flink为什么这么火"
  • spark streaming

Spark就是为离线计算而设计的,在Spark生态体系中,不论是流处理和批处理都是底层引擎都是Spark Core,Spark Streaming将微批次小任务不停的提交到Spark引擎,从而实现准实时计算,SparkStreaming只不过是一种特殊的批处理而已。

1.Flink为什么这么火"

Spark Streaming存在的问题

  1. 处理延迟较高
  2. 对状态的支持不完美
  3. 对窗口的支持不灵活
  4. 不支持EventTime
1.Flink为什么这么火"
  • Flink

Flink就是为实时计算而设计的,Flink可以同时实现批处理和流处理,Flink将批处理(即有有界数据)视作一种特殊的流处理。

1.Flink为什么这么火"

1.Flink为什么这么火"

五、Flink架构简介

1.Flink为什么这么火"
  • JobManager:

也称之为Master,用于协调分布式执行,它用来调度task,协调检查点,协调失败时恢复等。Flink运行时至少存在一个master,如果配置高可用模式则会存在多个master,它们其中有一个是leader,而其他的都是standby。

  • TaskManager:

也称之为Worker,用于执行一个dataflow的task、数据缓冲和Data Streams的数据交换,Flink运行时至少会存在一个TaskManager。JobManager和TaskManager可以直接运行在物理机上,或者运行YARN这样的资源调度框架,TaskManager通过网络连接到JobManager,通过RPC通信告知自身的可用性进而获得任务分配。

SparkStreaming和Flink的角色对比

Spark StreamingFlink
DStreamDataStream
TrasnformationTrasnformation
ActionSink
TaskSubTask
PipelineOprator chains
DAGDataFlow Graph
Master + DriverJobManager
Worker + ExecutorTaskManager

星哥原创,未经许可,不得转载

wx