第1章 Flink入门
决定Flink的架构和实现的核心概念:数据是流,是动态的。数据不是在某一个时刻凭空产生的,而是随着时间的流逝不断地产生,实时数据是当前的数据,历史数据就是截止到某个时刻产生的数据流集合。
大数据处理中有两种经典模式:批处理、流处理。以流为核心,必须解决如何在数据流上实现流批统一。Google在Streaming 101、Streaming 102两篇文章中对此进行了阐述,提出了一套以流为核心的计算引擎的关键概念,如有界数据(静态数据集)与无界数据(数据流)、时间、窗口、Watermark等,对流批的概念进行了融合。
无界数据就是持续产生的数据流,有界数据是过去一个时间窗口内不变的数据流。对无界数据的处理就是流处理,对有界数据的处理就是批处理。流处理就是对未来持续产生的数据进行计算,批处理是对过去不再变化的数据流的计算。基于这种抽象,Flink解决了流批统一的问题。
流即未来,Flink以流为核心的实现与Google Cloud Dataflow平台有异曲同工之妙。其中有两层含义:
● 一是实时处理的需求越来越大,数据的时效性非常重要。
● 二是以流为核心的计算引擎,是更加自然的大数据处理引擎的实现形式。
以数据流为核心基础,Apache Flink构建出了高性能、高可用的批流一体的分布式大数据计算引擎,在数据流上提供数据分发、通信、具备容错能力的分布式计算功能。
过去,很多人认为Flink是一个类似Storm的实时计算引擎,而如今Flink以流计算引擎为基础,同样支持批处理,并且提供了SQL、复杂事件处理CEP、机器学习、图计算等更高阶的数据处理场景。
提到Flink,必然绕不开Spark,Spark的核心是批处理,采用微批处理实现实时计算。但是随着Flink的成熟度越来越高,阿里巴巴在2019年收购了Flink的商业公司,把Blink重大改进贡献给社区,使Flink在功能、性能方面突飞猛进,在实时计算领域相比Spark Streaming、Storm的优势越来越大,在批处理方面的性能也与Spark不相上下。