前言
实时大数据是与时俱进的变革
从互联网时代的数据爆炸,到即将大规模铺开的 5G 通信支撑下的物联网时代的大数据浩海,作为赋能工具的大规模数据处理,技术架构起到了决定性的作用,反过来也推动了技术架构与时俱进。
在谷歌公司发表的三篇划时代论文(分别介绍MapReduce、GFS和BigTable)的推动下,开源项目Hadoop横空出世,并于2008年1月正式成为Apache的顶级项目;此后,Hadoop迅速建立起大数据生态体系,并由此衍生出一系列大数据处理的理论和与之对应的大数据处理框架:从批处理到流处理,从Hadoop到Storm/Spark,再到 Flink。本书将阐述大数据实时处理理论的变迁,并着重介绍流处理框架Flink。
数据处理任务往往需要对全量数据进行计算,而全量数据很难使用传统关系型数据库进行批量计算,原因如下:
(1)磁盘寻址时间的提升速度远远落后于磁盘带宽的提升速度。如果数据访问包含大量的磁盘寻址,则大数据处理势必带来较大的延迟,因此基于传输带宽设计大数据处理系统更符合现状。
(2)相比全量数据计算,关系型数据库适用于在线事务处理(OLTP,On-Line Transaction Processing)场景,查询和更新是其设计的要点,索引是主要的设计方案。但是在大数据集的场景下,索引的效率往往不如全量扫描。因此,Hadoop应运而生,借助MapReduce计算引擎成功解决了大数据所面临的可计算(可参考谷歌的论文MapReduce:Simplified Data Processing on Large Clusters)、伸缩、容错等困难,成为大数据系统的标配组件。
数据爆炸式增长,以及数据处理的实时性要求越来越高,大数据处理系统越来越复杂。在这种情况下,传统的OLTP+OLAP(On-Line Analysis Processing,在线分析处理)系统架构不堪重负:复杂的数据需求实现流程、过载的数据仓库抽取任务队列、不同的技术栈带来的需求理解偏差等将导致数据从IT部门到DT部门的周期过长;微服务方法的大规模应用,导致在分布式系统中维护全局状态的一致性异常困难,而以数据流作为中心数据源的流处理方法能有效规避这种困难。有的学者甚至提出通过合理的架构设计,打破CAP定理。因此,低延迟、强一致性、适用于乱序的流处理框架 Flink 正席卷而来,即将成为大数据领域流处理的标配组件。
本书特色
本书将从多个角度讲解同一个技术概念:
(1)分析引入 Flink 这个技术概念的原因,使读者能够快速理解相关技术的应用场景,如为什么需要实时数据处理、为什么需要机器学习架构、为什么需要关系型API、为什么需要复杂事件处理。
(2)剖析Flink技术的理论创新过程,使读者能够深入理解Flink的理论基础,使Flink应用开发架构师或工程师能够游刃有余地解决线上系统遇到的实际问题,如 Flink 一致性保证的异步检查点屏障的理论创新过程、机器学习中分类和推荐算法的分布式实现的理论创新过程、复杂事件处理的自动机理论创新。
(3)解析Flink编程API的架构。使读者可以从理论框架与Flink架构实现两个角度体会这个技术概念的内涵。
(4)总结应用API编程解决实际问题的方法。使读者能够在理解理论和编程API的基础上编程解决实际问题。
(5)在每章的最后一节提出一些开放式的思考题,以便读者思考这些技术概念之间的关联。
内容组织概要
本书共分为8章,每章的基本内容概要如下。
第1章流式数据架构理论 首先,概述大数据处理架构的演进历程,使读者了解大数据处理架构正在经历怎样的变革。以韩国SK电信的Driving Score技术架构演变和流式数据架构在机器学习领域的应用为例,介绍流式数据架构的产生背景及应用场景;其次,梳理流式数据架构中主要概念间的关联和关系,并以实例分析根据事件时间开滚动窗口的内在机制;最后,论述流式数据架构中一致性理论的基础及实现方式。
第2章编程基础 首先,概述Flink的特征,使读者快速了解Flink是什么;其次,搭建流处理和批处理IDEA开发环境,使读者感性地了解Flink是怎么解决数据处理问题的;最后,介绍Flink的编程模型与运行时结构,如API分层关系、应用程序基本结构、运行时结构、任务调度和物理执行计划。
第3章流处理API 首先,概述流处理Pipeline、Source和Sink的常见形式;其次,介绍时间特征设置与水印生成器、算子、窗口机制、连接器、状态管理与检查点编程。
第 4 章批处理 API 首先,概述批处理的程序结构,Source、Sink与连接器的常见形式,以及常见的算子函数;其次,以两个机器学习的例子来介绍迭代的应用;最后,介绍批处理程序优化的语义注解形式。
第5章机器学习引擎架构与应用编程 首先,在总结Scikit-learn架构实践的基础上,详细分析FlinkML的底层实现代码;其次,分析多项式曲线拟合、分类算法、推荐算法的理论和代码实现。本章有大量代码分析,是流处理与批处理API编程的实战部分。
第6章关系型API 首先,介绍Flink引入关系型API的原因,以及SQL解析与优化框架 Calcite;其次,详述关系型 API 的主要内容;最后,介绍架构在DataStream上的关系型API的背后机制,即动态表。
第7章复杂事件处理 首先,以股票异常交易检测为例讲述模式匹配的编程过程,以及流处理API和关系型API在解决这类问题时遇到的困难;其次,介绍NFAb模式匹配编程模型;最后,基于Flink CEP API编程解决股票异常交易检测问题。
第8章监控与部署 讲述指标度量的编程模型和Flink集群部署模式。
联系作者
购买本书的同时,你将获得免费向作者寻求帮助的权利。每章最后一节为思考题,设置思考题的目的是加深读者对本书的理解。这些问题是开放性的,因此书中并没有给出标准答案,读者可以通过作者的微信公众号(见前勒口)获取帮助。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
● 提交勘误:您对书中内容的修改意见可在【提交勘误】处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
● 与读者交流:在页面下方【读者评论】处留下您的疑问或观点,与其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/36045