2019年天猫双11再次刷新世界记录,订单创新峰值达到54.4万笔/秒,单日数据处理量达到970PB;支撑起这个双十一狂欢神话是阿里强悍的数据云上系统,这其中阿里的数据计算云引擎Blink功不可没,而Blink正是由Apache的顶级项目Flink经过"阿里化“而来;
四代计算引擎:
- MapReduce:批处理引擎,为其他计算引擎提供量大数据处理的核心思想:Mapper、Reduce;
- Storm:流计算引擎,为了满足更高的实效性而生的;
- Spark:集流式处理和批处理于一身的统一计算引擎,基于内存计算,提高性能(以批处理模拟了流式处理)
- Flink:另一款集流式处理和批处理于一身的统一计算引擎,吸收了以上三款引擎的优点进行改进后而来的计算框架(以流式计算模拟了批处理)
由此看出,计算引擎由批处理向流式处理发展,由一个组件干一个事向一个组件干全部事转变,一代代计算引擎的发展,追求的目标都是:更通用,更高效,更优雅,更易用的一栈式(集成批处理和流式处理)的计算引擎;
相较于Flink前三代计算引擎的区别与缺点:
-
MapReduce作为初代计算引擎最大的价值在于提供了一种分布式计算的思想,但是随着业务中海量数据集越来越普遍,使用无限数据流处理而设计的系统处理数据场景越来越多,MapReduce效能和开发复杂度的局限性也突显出来;
-
Storm是第一款流失计算引擎
- 使用Clojure(基于JVM)语言开发,想看源码不方便;
- Storm本身还存在一些bug,生产上发生过集群崩溃的事件;
- 不具备一些流处理中需要的高级功能:例如exactly one等;
-
Spark与Flink功能类似,Flink拥有Spark全部的功能,而Spark是当下最流行最完美的一套计算引擎,但是:
- 核心理念不同:
- Spark核心模块SparkCore是用于批处理的,批处理为常态,SparkStreaming是利用微批处理来模拟实现的流处理;
- Flink的核心为流式处理,流处理为常态;利用流处理去模拟出批处理;Flink把核心放在流处理上,实现来一些高级也是必须的功能,如数据状态,事件时间,分布式快照,watermark等;
- Flink支持增量迭代,具有对迭代自动优化对功能,在迭代数据处理上,比Spark更突出
- Flink相较于Spark有更高对吞吐量,更强对计算性能,更低对延迟,更好对容错机制
- 核心理念不同:
Flink
Flink等诞生:
Flink源于柏林工业大学等一个研究性项目----StratoSphere;早期Flink是做批处理等,但是在2014年,StratoSphere里面的核心成员孵化出Flink,同年Flink捐给来Apache,后来成为Apache的顶级大数据项目,同时Flink将计算的主流方向定位为流处理;
Flink是什么:
Flink是一个低延迟,高吞吐、统一的大数据计算引擎;---- Stateful Computations over Data Streams,有状态的流式计算引擎。
Flink最区别于其他流计算引擎对就是statefule;即有状态计算 Flink提供流内置对对状态对一致性对处理,即如果任务发生流Failover,其状态不会丢失,不会被多算少算,同时提供流非常高对性能;
- Streaming-first
- 支持Batch on Streaming和Streaming
- Fault-tolerant:高容错,可靠性,checkpoint
- Scalable:可扩展性,1000个节点以上;
- Performance,高性能,高吞吐,低延迟;
- 支持带有事件时间对窗口操作;支持灵活对窗口操作:time、count、session、以及data-driven窗口操作;
- 支持具有Backpressure功能对持续流模型;
- 支持基于轻量级分布式快照(Snapsho