1.1 Flink的起源和设计理念
Flink源于一个叫作Stratosphere的项目,它是由3所地处柏林的大学和欧洲其他一些大学共同进行的研究项目,由柏林工业大学的教授沃克尔·马尔科(Volker Markl)领衔开发。2014年4月,Stratosphere的代码被复制并捐赠给了Apache软件基金会,Flink就是在此基础上被重新设计出来的。
在德语中,“flink”一词表示“快速、灵巧”。Flink的Logo是一只彩色的松鼠,当然,这不仅仅是因为Apache软件基金会的大数据项目对动物的喜好(是否联想到了Hadoop、Hive),更是因为松鼠这种小动物完美地体现了“快速、灵巧”的特点。关于Logo的颜色,还有一个有趣的缘由:柏林当地的松鼠非常漂亮,颜色是迷人的红棕色;而Apache软件基金会的Logo刚好也是一根以红棕色为主的渐变色羽毛,于是,Flink的Logo就被设计成红棕色,而且拥有一条漂亮的渐变色尾巴,尾巴的配色与Apache软件基金会的Logo一致,如图1-1所示,这只松鼠色彩炫目,既呼应了Apache软件基金会的风格,又似乎预示着Flink未来会大放异彩。
图1-1 Flink的Logo
从命名上,我们可以看出Flink项目对自身特点的定位,那就是对大数据处理,要做到快速和灵活。
• 2014年8月,Flink的第一个版本0.6正式发布(至于0.5之前的版本,那就是在Stratosphere名下的了)。与此同时,Flink的几位核心开发者创办了Data Artisans公司,主要做Flink的商业应用,帮助企业部署大规模数据处理解决方案。
• 2014年12月,Flink项目完成了孵化,一跃成为Apache软件基金会的顶级项目。
• 2015年4月,Flink发布了里程碑式的重要版本0.9.0,很多国内外大公司也是从这时开始关注并参与Flink社区的建设的。
• 2019年1月,长期对Flink投入研发的阿里巴巴以9000万欧元的价格收购了Data Artisans公司;之后又将自己的内部版本Blink开源,继而与2019年8月发布的Flink 1.9.0版本进行了合并。自此之后,Flink被越来越多的人熟知,成为当前最火的新一代大数据处理框架之一。
由此可见,Flink从真正起步到火爆,不过几年的时间。在这短短几年内,Flink从最初的第一个稳定版本0.9,到本书编写期间已经发布到了1.13.0版本,这期间不断有新功能、新特性加入。一开始,Flink就拥有一个非常活跃的社区,而且一直在快速成长。目前,Flink已经发展成为最复杂的开源流处理引擎之一,得到了广泛的应用。
根据Apache软件基金会发布的2020年度报告,Flink项目的社区参与和贡献依旧非常活跃,在Apache软件基金会旗下的众多项目中保持着多项领先。
• 邮件列表(Mailing List)活跃度排名第一。
• 代码提交(Commits)数排名第二。
• GitHub访问量排名第二。
在Flink官网主页的顶部可以看到项目的核心目标,即“数据流上的有状态计算”(Stateful Computations over Data Streams)。
Flink是一个框架和分布式处理引擎(这是Flink的具体定位),如图1-2所示为Flink框架处理流程,用于对无界和有界数据流进行有状态的计算。Flink在所有常见的集群环境中都可以运行,以内存执行速度和任意规模来执行计算。
图1-2 Flink框架处理流程
这里有很多专业词汇,我们从中至少可以提炼出一些容易理解的信息:Flink是一个“框架”,是一个数据处理的“引擎”;既然是“分布式”的,当然是为了应对大规模数据的应用场景了;Flink处理的是数据流。因此,Flink是一个流式大数据处理引擎。
“内存执行速度”和“任意规模”突出了Flink的两个特点:速度快、可扩展性强,这说的自然就是小松鼠的“快速”和“灵巧”了。
那什么叫作“无界和有界数据流”呢?什么又叫作“有状态的计算”呢?这涉及流处理的相关知识,会在后续章节一一展开介绍。