¥ 55.67 8.0折 ¥ 69.8 全新
库存5件
作者鲁蔚征
出版社人民邮电出版社
ISBN9787115546159
出版时间2021-02
装帧平装
开本其他
定价69.8元
货号1202308646
上书时间2024-11-07
本书围绕大数据流处理领域,介绍Flink DataStream API、时间和窗口、状态和检查点、Table API和SQL等知识。本书以实践为导向,使用大量真实业务场景案例来演示如何基于Flink进行流处理。
本书主要面向对大数据领域感兴趣的本科生、研究生,想转行到大数据开发行业的在职人员,或有一定大数据开发经验的相关从业人员。读者*好有一定的Java或Scala编程基础,掌握计算机领域的常见技术概念。
鲁蔚征 前小米工程师,现中国人民大学教师,一直从事大数据相关的开发和研究工作,关注大数据行业的发展,先后接触了Hadoop、Hive、Kafka、Spark、TensorFlow等大数据中间件,在大数据的流处理和批处理方向上有一定的实际工作经验。主要研究项目及领域为推荐系统、大数据。今日头条科技领域优质创作者。
第 1章 大数据技术概述 ................ 1
1.1 什么是大数据 ................................. 2
1.1.1 大数据的5个“V” ....................... 2
1.1.2 大数据分而治之 ............................... 3
1.2 从批处理到流处理 .......................... 6
1.2.1 数据与数据流 ................................... 6
1.2.2 批处理与流处理 ............................... 7
1.2.3 为什么需要一个优秀的
流处理框架 ........................................ 7
1.3 代表性大数据技术 .......................... 9
1.3.1 Hadoop ............................................ 9
1.3.2 Spark ............................................... 10
1.3.3 Apache Kafka ............................... 11
1.3.4 Flink ................................................. 12
1.4 从Lambda到Kappa:
大数据处理平台的演进 .................. 13
1.4.1 Lambda架构 ................................ 14
1.4.2 Kappa架构 .................................... 15
1.5 流处理基础概念 ........................... 16
1.5.1 延迟和吞吐 ..................................... 16
1.5.2 窗口与时间 ..................................... 17
1.5.3 状态与检查点 ................................. 20
1.5.4 数据一致性保障 ............................. 21
1.6 编程语言的选择 ........................... 21
1.6.1 Java和Scala ................................. 21
1.6.2 Python ............................................ 22
1.6.3 SQL .................................................. 23
1.7 案例实战 使用Kafka构建
文本数据流 .................................. 23
1.7.1 Kafka和消息队列相关
背景知识 ..........................................23
1.7.2 使用Kafka构建一个
文本数据流 ......................................24
本章小结 ............................................. 26
第 2章 大数据编程知识 ...... 27
2.1 继承和多态 .................................. 28
2.1.1 继承、类和接口 .............................28
2.1.2 重写与重载 .....................................30
2.1.3 继承和多态小结 .............................32
2.2 泛型 ............................................ 32
2.2.1 Java中的泛型 ................................32
2.2.2 Scala中的泛型 ..............................35
2.2.3 泛型小结 .........................................36
2.3 函数式编程 .................................. 36
2.3.1 函数式编程思想简介 .....................36
2.3.2 Lambda表达式的内部结构 ........37
2.3.3 函数式接口 .....................................38
2.3.4 Java Stream API ...........................40
2.3.5 函数式编程小结 .............................41
2.4 案例实战 Flink开发环境搭建 ........ 42
2.4.1 准备所需软件 .................................42
2.4.2 下载并安装Flink ...........................43
2.4.3 创建Flink工程 ..............................43
2.4.4 调试和运行Flink程序 ..................48
2.4.5 运行程序 .........................................50
Flink原理与实践
本章小结 ............................................. 53
第3章 Flink的设计与
运行原理 ........................... 54
3.1 Flink数据流图简介 ....................... 55
3.1.1 Flink程序和数据流图 .................. 55
3.1.2 从逻辑视图转化为物理执行图 .... 57
3.1.3 数据交换策略 ................................. 58
3.2 Flink分布式架构与核心组件 .......... 59
3.2.1 Flink作业提交过程....................... 59
3.2.2 Flink核心组件 ............................... 60
3.2.3 Flink组件栈 ................................... 61
3.3 任务执行与资源划分 ..................... 63
3.3.1 再谈逻辑视图到物理执行图 ........ 63
3.3.2 任务、算子子任务与算子链 ........ 64
3.3.3 Slot与计算资源 ............................ 65
3.4 实验WordCount程序
迭代和完善 .................................. 67
一、实验目的 .............................................. 67
二、实验内容 .............................................. 67
三、实验要求 .............................................. 68
四、实验报告 .............................................. 68
本章小结 ............................................. 68
第4章 DataStream API的
介绍和使用 ....................... 70
4.1 Flink程序的骨架结构 ................... 71
4.1.1 设置执行环境 ................................. 71
4.1.2 读取数据源 ..................................... 72
4.1.3 进行转换操作 ................................. 72
4.1.4 结果输出 ......................................... 73
4.1.5 执行 ..................................................73
4.2 常见Transformation的
使用方法 ..................................... 73
4.2.1 单数据流基本转换 .........................74
4.2.2 基于Key的分组转换 ....................78
4.2.3 多数据流转换 .................................84
4.2.4 并行度与数据重分布 .....................86
4.3 数据类型和序列化 ........................ 92
4.3.1 Flink支持的数据类型 ...................92
4.3.2 TypeInformation .........................96
4.3.3 注册类 ..............................................98
4.3.4 Avro、Kryo、Thrift和
Protobuf .........................................99
4.3.5 数据类型的选择 .......................... 103
4.4 用户自定义函数 .......................... 104
4.4.1 接口 ............................................... 104
4.4.2 Lambda表达式 .......................... 105
4.4.3 Rich函数类 ................................. 108
4.5 实验 股票价格数据流处理 ........... 109
一、实验目的 ............................................ 109
二、实验内容 ............................................ 110
三、实验要求 ............................................ 111
四、实验报告 ............................................ 112
本章小结 ........................................... 112
第5章 时间和窗口 .................... 113
5.1 Flink的时间语义 ........................ 114
5.1.1 Flink的3种时间语义 ............... 114
5.1.2 设置时间语义 .............................. 115
5.1.3 Event Time和Watermark ..... 116
5.1.4 分布式环境下Watermark的
传播 ................................................ 116
5.1.5 设置时间戳及生成
Watermark .................................. 118
5.1.6 平衡延迟和准确性 ..................... 123
5.2 ProcessFunction系列函数 ........ 123
5.2.1 Timer的使用方法 ...................... 123
5.2.2 侧输出 .......................................... 126
5.2.3 在两个数据流上使用
ProcessFunction ....................... 127
5.3 窗口算子的使用 .......................... 129
5.3.1 窗口程序的骨架结构 ................. 129
5.3.2 内置的3种窗口划分方法 ......... 131
5.3.3 窗口处理函数 .............................. 135
5.3.4 拓展和自定义窗口 ..................... 141
5.4 双流连接 ................................... 146
5.4.1 Window Join ............................. 146
5.4.2 Interval Join ............................... 149
5.5 处理迟到数据 ............................. 150
5.5.1 将迟到数据发送到另外一个
数据流 ........................................... 151
5.5.2 更新计算结果 .............................. 151
5.6 实验 股票价格数据进阶分析 ........ 153
一、实验目的 ........................................... 153
二、实验内容 ........................................... 153
三、实验要求 ........................................... 154
四、实验报告 ........................................... 154
本章小结 ........................................... 154
第6章 状态和检查点 ................ 155
6.1 实现有状态的计算 ...................... 156
6.1.1 为什么要管理状态 ..................... 156
6.1.2 Flink中几种常用的状态 ........... 157
6.1.3 横向扩展问题 .............................. 159
6.1.4 Keyed State的使用方法 .......... 160
6.1.5 Operator List State的
使用方法 ....................................... 165
6.1.6 BroadcastState的使用方法 .... 169
6.2 Checkpoint机制的原理及
配置方法 ................................... 173
6.2.1 Flink分布式快照流程 ................ 173
6.2.2 分布式快照性能优化方案 ......... 177
6.2.3 State Backend ........................... 177
6.2.4 Checkpoint相关配置 ............... 179
6.2.5 重启恢复流程 .............................. 180
6.3 Savepoint机制的原理及
使用方法 ................................... 182
6.3.1 Savepoint机制与Checkpoint
机制的区别 ................................... 182
6.3.2 Savepoint的使用方法 ............. 183
6.3.3 读/写Savepoint中的数据 ...... 184
6.3.4 Queryable State和
State Processor API ................... 194
6.4 实验 电商平台用户行为分析 ........ 195
一、实验目的 ............................................ 195
二、实验内容 ............................................ 195
三、实验要求 ............................................ 195
四、实验报告 ............................................ 195
本章小结 ........................................... 195
第7章 Flink连接器 ................ 196
7.1 Flink端到端的
Exactly-Once保障 ................... 197
7.1.1 故障恢复与一致性保障 ............. 197
7.1.2 幂等写 ........................................... 198
7.1.3 事务写 ........................................... 199
7.2 自定义Source和Sink ............... 200
7.2.1 Flink 1.11之前的Source ........ 200
7.2.2 Flink 1.11之后的Source ........ 205
Flink原理与实践
7.2.3 自定义Sink ................................. 205
7.3 Flink中常用的Connector .......... 211
7.3.1 内置I/O接口 .............................. 212
7.3.2 Flink Kafka Connector ........... 217
7.4 实验 读取并输出股票价格
数据流 ...................................... 220
一、实验目的 ........................................... 220
二、实验内容 .........................................
— 没有更多了 —
以下为对购买帮助不大的评价