猜你喜欢
深入理解Flink:实时大数据处理实践

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

书籍作者:余海峰 ISBN:9787121360459
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1862
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《深入理解Flink:实时大数据处理实践》介绍了实时数据处理引擎Flink,讲解了流处理API、批处理API、机器学习引擎FlinkML、关系型API、复杂事件处理,以及指标度量与部署模式,分析了流式数据处理理论中时间、窗口、水印、触发器、迟到生存期之间的关联和关系,深入分析了多项式曲线拟合、分类算法、推荐算法的理论和FlinkML实现。

《深入理解Flink:实时大数据处理实践》适合希望快速上手Flink 以开展实时大数据处理与在线机器学习应用的从业者阅读。

编辑推荐
适读人群 :本书适合希望快速上手 Flink 以开展实时大数据处理与在线机器学习应用的从业者阅读。

批处理|流处理|编程基础|FlinkML|Flink CEP|实时大数据理论+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 集群部署模式。
  联系作者
  购买本书的同时,你将获得免费向作者寻求帮助的权利。每章最后一节为思考题,设置思考题的目的是加深读者对本书的理解。这些问题是开放性的,因此书中并没有给出标准答案,读者可以通过作者的微信公众号(见前勒口)获取帮助。
  读者服务
  轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
  提交勘误:您对书中内容的修改意见可在【提交勘误】处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
  与读者交流:在页面下方【读者评论】处留下您的疑问或观点,与其他读者一同学习交流。

目录

第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

产品特色