前言
关于本书
随着Flink的应用越来越广泛,关于Flink的书籍、文章也越来越多,但是系统性地阐述Flink设计原理和实现方法的书籍却很少。本书的核心目标是对Flink的设计与原理做一个比较系统的介绍,尽量将Flink的核心原理与其实现细节呈现给读者,但是由于篇幅有限,加之Flink体系庞大且复杂,本书难以将其细节一一呈现,只能选择重点部分加以阐述,如有疏漏、谬误之处还请包涵。各个大数据计算引擎在原理上类似,但在设计取向和实现方法上会有不同。希望通过阅读本书,读者能够对分布式计算引擎有更加深入的理解,开拓视野。
关于如何使用Flink,业内已经有相关书籍、官方文档、网络技术文章可以参考,因此本书不是介绍如何开发Flink应用,而是以Word Count经典案例贯穿本书,作为讲解和演示。本书涉及的Hadoop、Yarn、K8s、Mesos、Kafka等Flink之外的大数据领域的组件,不是本书主要介绍的内容,读者可以阅读相应的书籍,也可以参考网上的技术文章。
适合人群
本书特别适合“穷理以致其知,反躬以践其实”的人阅读,具体有以下人群。
● 愿意深入了解Flink设计与实现原理的Flink开发者。
● 对流计算感兴趣的大数据开发人员、技术爱好者。
● 对性能优化和部署感兴趣的运维工程师与架构师。
● 对Flink感兴趣的Spark开发人员、架构师。
阅读建议
建议首先通读本书,对Flink建立一个基本的认识,了解其核心流程,不同的组件及其作用、相互之间的关联关系,避免沉浸在细节中,窥一斑不见全貌。有了总体的认识之后,再有针对性地了解细节。
本书内容大概分为三大部分:基础知识、核心执行、运维管理。
基础知识包含第1~7章。第1章是总体性的介绍;第2章介绍Flink应用中的基本概念及其API层;第3~7章介绍Flink底层运行的核心抽象及其实现,如内存管理、时间与窗口、类型与序列化、状态原理等。
核心执行包含第8~14章。其中第8~13章是Flink作业提交、执行、应用容错等方面实现原理的介绍;第14章是Flink SQL实现原理的介绍,未来SQL是比较重要的应用开发方式。
运维管理包含第15、16章。第15章是Flink运维监控原理的介绍;第16章是Flink集群内部的通信框架介绍。
强烈建议各位读者,不要从学习的角度去阅读本书,而是从设计一个批流一体的大数据计算引擎的角度来进行阅读,思考作为设计者必须要解决哪些问题,如何解决这些问题。
本书以Flink 1.10版本为基础编写,随着Flink的演进,后续将会持续更新,敬请期待。
读者沟通
在阅读本书的过程中,读者若遇到任何问题、有任何建议,都可以向deep_in_flink@126. com发送邮件,或者在https://github. com/ffly1985/deep-in-flink上提交issue,对于读者比较关注的内容,编者将在后续版本中丰富完善。
致谢
感谢我们所生活的时代,这是一个信息爆炸的时代,数据量呈指数级增长,大数据的技术快速发展,数据处理的手段也在不断进化,实时智能时代的到来使得本书有了面世的机会。
感谢为Flink的发展壮大付出辛苦努力的社区,为了Flink的完善、推广付出巨大努力的阿里Flink团队,还有其他分享Flink经验的各行业领军企业,正是有了它们共同的努力,才使得Flink成为流计算事实上的标准。
感谢中国移动信息技术中心的领导尚晶、郭志伟、武智晖、刘辉等,在本书编写过程中,他们给了很多思路和意见。同时与中国移动各省分公司的集中交流、研讨,也使得Flink在运营商领域的位置计算、业务信息补全、复杂事件处理等实时计算场景下的适用性得到了印证。
感谢编者所在公司给予的良好技术氛围和工作环境,使得作者能够全心全意投入到技术的研究中,同时要感谢同事张文霞、孙得强、李运波、王茂均、赵红岩花费了大量时间分享Flink的实战经验、提出建议、书稿勘误,使得本书的内容得以持续完善。
编者