Flink核心技术:源码剖析与特性开发epub电子书提取码

简介: 本书从设计思想和特性开发两个视角,对Flink框架进行介绍。

第1章

序篇

目前在生产环境中可供选择的大数据分布式计算框架层出不穷,其中较为流行、稳定且性能最良好的开源框架包括MapReduce和Spark,它们几乎分别成为批量计算和微批计算的行业标准。而且Spark经过多年的发展,在流式计算领域也有着优异的表现。

虽然Spark在多种计算场景下有着不俗的性能表现,但是由于它早期是用于批量计算的,因此在底层架构、数据抽象等方面仍不可避免地保留了许多批量计算的概念。Flink的诞生并不比Spark晚,不过由于它在设计之初就真正将数据当作数据流而非数据集来处理,因此可以说在流式计算方面,Flink拥有比Spark更加先进的计算模型。此外,Flink以流处理为基础,对批处理也有很好的支持。许多人说“Flink是(继Spark之后的)下一代大数据处理引擎”,这并非噱头。本书会从Flink的计算封装逻辑、执行图的生成、数据的交换、状态容错、窗口计算等各方面对这一说法进行全面且深入的探讨。

本章旨在让读者对Flink有总体的了解,以为接下来的学习打好基础。

希望在学习完本章后,读者能够了解:

● Flink的发展历史;

● Flink支持的应用场景;

● Flink的核心特性;

● Flink的架构;

● 实现Flink源码的基本技巧。

1.1

Flink的诞生与发展

Flink最早是德国一些大学中的研究项目,经过多年的发展,其已在现实的生产场景中得到了越来越多的应用。近些年,由于社区的推动和商业上的支持,Flink在流式计算领域相比其他大数据分布式计算引擎有着明显的优势,并且在批量计算、批流一体化的发展上有着令人期待的前景。

1.1.1 Stratosphere项目

在Flink官网,有一栏为Flink Blog(Flink博客),其中会定期发布一些文章来记录Flink发展过程中的重大事件或介绍新引入的重要概念等。Flink Blog中的第一篇文章宣布了Flink 0.6的发布。在Flink官网中可供下载的第一个版本是0.6版本,因为在0.5版本及之前的版本中,项目名称为Stratosphere,即Flink的前身。

Stratosphere项目起源于德国柏林工业大学(Technische Universität Berlin)Volker Markl教授于2008年提出的构想。由于数据库是Volker Markl教授的主要研究方向之一,因此创建该项目的初衷是构建一个以数据库概念为基础、以大规模并行处理(massively parallel processing,MPP)架构为支撑、以MapReduce计算模型为逻辑框架的分布式数据计算引擎。在此构想之上,在该项目中还专门引入了流处理,为后来Flink的发展“添加”了良好的“基因”。

Volker Markl教授联络德国柏林工业大学、德国柏林洪堡大学(Humboldt–Universität zu Berlin)和德国哈索·普拉特纳研究所(Hasso Plattner Institute)的多名科研人员,共同开始Stratosphere项目的研发。在2010年前后,第一版Stratosphere以开源的形式发布。在获得初步的应用和一定范围的关注后,该项目组在2010年至2014年又持续改进并陆续发布了多个版本。从此期间项目组发表的论文可以观察到,该项目已经具备了后来的Flink的雏形,可以看到如JobGraph、ExecutionGraph等执行图的概念以及作业管理器(JobManager)、任务管理器(TaskManager)等组件的架构设计。

随着知名度的提高,Stratosphere项目遇到了命名的困扰。项目组成员发现Stratosphere这个名字早已由一家商业实体注册,他们不得不对项目重新命名。最终,在2014年申请成为Apache软件基金会的孵化器项目后,经过项目组成员投票,项目正式更名为Flink。Flink在德语中意为“敏捷、快速”。同时,项目组决定使用松鼠形象作为商标,也是为了强调“敏捷、快速”的特性(如图1-1所示)。

版权:人民邮电出版社