深入理解Flink:实时大数据处理实践
  • 推荐0
  • 收藏0
  • 浏览1.2K

深入理解Flink:实时大数据处理实践

余海峰 (作者) 

  • 书  号:978-7-121-36045-9
  • 出版日期:2019-04-16
  • 页  数:304
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:郑柳洁
纸质版 ¥89.00
本书介绍了当下最流行的实时数据处理引擎Flink,讲解了流处理API、批处理API、机器学习引擎FlinkML、关系型API、复杂事件处理FLinkCEP,以及指标度量与部署模式。此外,本书展开分析了流式数据处理理论中时间、窗口、水印、触发器、迟到生存期之间的关联关系;深入分析了多项式曲线拟合、分类算法SVM、推荐算法ALS-WR的理论和FlinkML实现。
希望快速上手Flink以开展实时大数据处理与在线机器学习应用的从业者,本书是不二的选择:本书首先介绍相关概念引入的原因、解决方案的演进过程、Flink的对应架构、编程案例以及开放式的思考问题。
透彻地分析了实时大数据理论的内涵及Flink的实践方法论|Flink流处理框架案头参考书
实时大数据是与时俱进的变革
从互联网时代的数据爆炸,到即将大规模铺开的 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 集群部署模式。

目录

第 1 章 流式数据架构理论 ............................................................................... 1
1.1 大数据处理架构演进历程 ......................................................................... 1
1.2 案例分析 ..................................................................................................... 8
1.2.1 SK 电信驾驶安全性评分 ................................................................ 8
1.2.2 流式机器学习应用 ........................................................................ 12
1.3 流式数据架构基本概念 ........................................................................... 17
1.3.1 流 .................................................................................................... 17
1.3.2 时间 ................................................................................................ 18
1.3.3 窗口 ................................................................................................ 21
1.3.4 水印 ................................................................................................ 23
1.3.5 触发器 ............................................................................................ 23
1.3.6 数据处理模式 ................................................................................ 23
1.3.7 如何理解流式数据架构的内在机制 ............................................ 27
1.4 根据事件时间开滚动窗口 ....................................................................... 28
1.4.1 what:转换/where:窗口 ........................................................... 29
1.4.2 when:水印 ................................................................................... 29
1.4.3 when:触发器 ............................................................................... 32
1.4.4 when:迟到生存期 ....................................................................... 34
1.4.5 how:累加模式 ............................................................................. 35
1.5 一致性 ....................................................................................................... 37
1.5.1 有状态计算 .................................................................................... 37
1.5.2 exactly-once 语义 ........................................................................... 38
1.5.3 异步屏障快照 ................................................................................ 39
1.5.4 保存点 ............................................................................................ 44
1.6 思考题 ....................................................................................................... 45
第 2 章 编程基础 ........................................................................................... 46
2.1 Flink 概述 ................................................................................................. 46
2.2 让轮子转起来 ........................................................................................... 47
2.2.1 本书约定 ........................................................................................ 47
2.2.2 搭建单机版环境 ............................................................................ 48
2.2.3 配置 IDEA ..................................................................................... 51
2.3 编程模型 ................................................................................................... 53
2.3.1 分层组件栈 .................................................................................... 53
2.3.2 流式计算模型 ................................................................................ 54
2.3.3 流处理编程 .................................................................................... 57
2.4 运行时 ....................................................................................................... 62
2.4.1 运行时结构 .................................................................................... 62
2.4.2 任务调度 ........................................................................................ 66
2.4.3 物理执行计划 ................................................................................ 69
2.5 思考题 ....................................................................................................... 70
第 3 章 流处理 API ........................................................................................ 71
3.1 流处理 API 概述....................................................................................... 71
3.2 时间处理 ................................................................................................... 73
3.2.1 时间 ................................................................................................ 73
3.2.2 水印 ................................................................................................ 74
3.2.3 周期性水印生成器 ........................................................................ 75
3.2.4 间歇性水印生成器 ........................................................................ 77
3.2.5 递增式水印生成器 ........................................................................ 78
3.3 算子 ........................................................................................................... 79
3.3.1 算子函数 ........................................................................................ 80
3.3.2 数据分区 ........................................................................................ 83
3.3.3 资源共享 ........................................................................................ 85
3.3.4 RichFunction .................................................................................. 85
3.3.5 输出带外数据 ................................................................................ 86
3.4 窗口 ........................................................................................................... 86
3.4.1 窗口分类 ........................................................................................ 87
3.4.2 窗口函数 ........................................................................................ 90
3.4.3 触发器 ............................................................................................ 94
3.4.4 清除器 ............................................................................................ 96
3.4.5 迟到生存期 .................................................................................... 96
3.5 连接器 ....................................................................................................... 97
3.5.1 HDFS 连接器 ................................................................................. 98
3.5.2 Kafka .............................................................................................. 99
3.5.3 异步 I/O ........................................................................................ 102
3.6 状态管理 ................................................................................................. 104
3.6.1 状态分类 ...................................................................................... 104
3.6.2 托管的 Keyed State ...................................................................... 104
3.6.3 状态后端配置 .............................................................................. 106
3.7 检查点 ..................................................................................................... 107
3.8 思考题 ..................................................................................................... 108
第 4 章 批处理 API ...................................................................................... 109
4.1 批处理 API 概述..................................................................................... 109
4.1.1 程序结构 ...................................................................................... 110
4.1.2 Source ........................................................................................... 111
4.1.3 Sink ............................................................................................... 112
4.1.4 连接器 .......................................................................................... 112
4.2 算子 ......................................................................................................... 113
4.2.1 算子函数 ...................................................................................... 113
4.2.2 广播变量 ...................................................................................... 121
4.2.3 文件缓存 ...................................................................................... 122
4.2.4 容错 .............................................................................................. 123
4.3 迭代 ......................................................................................................... 123
4.3.1 深度神经网络训练 ...................................................................... 123
4.3.2 网络社团发现算法 ...................................................................... 125
4.3.3 Bulk Iteration ................................................................................ 127
4.3.4 Delta Iteration 的迭代形式 .......................................................... 128
4.4 注解 ......................................................................................................... 130
4.4.1 直接转发 ...................................................................................... 130
4.4.2 非直接转发 .................................................................................. 131
4.4.3 触达 .............................................................................................. 132
4.5 思考题 ..................................................................................................... 132
第 5 章 机器学习引擎架构与应用编程 ......................................................... 133
5.1 概述 ......................................................................................................... 133
5.1.1 数据加载 ...................................................................................... 134
5.1.2 多项式曲线拟合的例子 .............................................................. 135
5.2 流水线 ..................................................................................................... 137
5.2.1 机器学习面临的架构问题 .......................................................... 137
5.2.2 Scikit-learn 架构实践总结 .......................................................... 138
5.2.3 FlinkML 实现 ............................................................................... 140
5.3 深入分析多项式曲线拟合 ..................................................................... 170
5.3.1 数值计算的底层框架 .................................................................. 170
5.3.2 向量 .............................................................................................. 172
5.3.3 数据预处理 .................................................................................. 178
5.3.4 特征变换 ...................................................................................... 184
5.3.5 线性拟合 ...................................................................................... 188
5.4 分类算法 ................................................................................................. 190
5.4.1 最优超平面 .................................................................................. 190
5.4.2 凸优化理论 .................................................................................. 193
5.4.3 求解最优超平面 .......................................................................... 198
5.4.4 核方法 .......................................................................................... 200
5.4.5 软间隔 .......................................................................................... 205
5.4.6 优化解法 ...................................................................................... 208
5.4.7 SVM 的 FlinkML 实现 ............................................................... 211
5.4.8 SVM 的应用 ................................................................................ 220
5.5 推荐算法 ................................................................................................. 221
5.5.1 推荐系统的分类 .......................................................................... 221
5.5.2 ALS-WR 算法 .............................................................................. 223
5.5.3 FlinkML 实现 ............................................................................... 225
5.5.4 ALS-WR 的应用 .......................................................................... 230
5.6 思考题 ..................................................................................................... 230
第 6 章 关系型 API ...................................................................................... 234
6.1 为什么需要关系型 API .......................................................................... 234
6.2 Calcite ...................................................................................................... 235
6.3 关系型 API 概述..................................................................................... 236
6.3.1 程序结构 ...................................................................................... 236
6.3.2 Table 运行时 ................................................................................ 239
6.3.3 表注册 .......................................................................................... 241
6.3.4 TableSource 与 TableSink ............................................................ 242
6.3.5 查询 .............................................................................................. 244
6.3.6 相互转换 ...................................................................................... 244
6.4 动态表概述 ............................................................................................. 247
6.4.1 流式关系代数 .............................................................................. 247
6.4.2 动态表 .......................................................................................... 248
6.4.3 持续查询 ...................................................................................... 250
6.5 思考题 ..................................................................................................... 255
第 7 章 复杂事件处理 .................................................................................. 256
7.1 什么是复杂事件处理 ............................................................................. 256
7.1.1 股票异常交易检测 ...................................................................... 256
7.1.2 重新审视 DataStream 与 Table API ............................................ 258
7.2 复杂事件处理的自动机理论 ................................................................. 259
7.2.1 有穷自动机模型 NFA ................................................................. 259
7.2.2 NFAb 模型 .................................................................................... 261
7.2.3 带版本号的共享缓存 .................................................................. 263
7.3 FlinkCEP API .......................................................................................... 265
7.3.1 基本模式 ...................................................................................... 266
7.3.2 模式拼合 ...................................................................................... 267
7.3.3 模式分组 ...................................................................................... 268
7.3.4 匹配输出 ...................................................................................... 269
7.4 基于 FlinkCEP 的股票异常交易检测的实现 ....................................... 270
7.5 思考题 ..................................................................................................... 274
第 8 章 监控与部署 ...................................................................................... 275
8.1 监控 ......................................................................................................... 275
8.1.1 度量指标 ...................................................................................... 275
8.1.2 指标的作用域 .............................................................................. 279
8.1.3 监控配置 ...................................................................................... 279
8.2 集群部署模式 ......................................................................................... 281
8.2.1 Standalone .................................................................................... 281
8.2.2 YARN ........................................................................................... 281
8.2.3 高可用 .......................................................................................... 284
8.3 访问安全 ................................................................................................. 284
8.4 思考题 ..................................................................................................... 286
参考资料 ........................................................................................................ 287

读者评论