林子雨 编著 《Flink编程基础(Java版)》
人民邮电出版社出版发行 定价:69.8元
ISBN: 978-7-115-64149-6 2024年7月第1版
教材目录
第 1 章 大数据技术概述 ……….. 1
1.1 大数据概念与关键技术………………..1
1.1.1 大数据概念……………………………….. 1
1.1.2 大数据关键技术………………………… 2
1.2 代表性大数据技术 ……………………..3
1.2.1 Hadoop …………………………………….. 3
1.2.2 Spark ……………………………………….. 7
1.2.3 Flink………………………………………..10
1.2.4 Beam……………………………………….11
1.3 在线资源 ……………………………….12
1.4 本章小结 ……………………………….13
1.5 习题……………………………………..13
第 2 章 Flink 的设计与运行原理…………………… 14
2.1 Flink 简介………………………………14
2.2 为什么选择 Flink……………………..15
2.2.1 传统数据处理架构 ……………………15
2.2.2 大数据 Lambda 架构………………..16
2.2.3 流处理架构………………………………16
2.2.4 Flink 是理想的流计算框架………. 17
2.2.5 Flink 的优势…………………………….18
2.3 Flink 应用场景 …………………………….. 19
2.3.1 事件驱动型应用 ……………………….19
2.3.2 数据分析应用…………………………..20
2.3.3 数据流水线应用 ……………………….21
2.4 Flink 中的统一数据处理 …………….22
2.5 Flink 核心组件栈……………………..23
2.6 Flink 工作原理 ………………………..23
2.7 Flink 编程模型 ………………………..25
2.8 Flink 的应用程序结构………………..25
2.9 Flink 程序的并行度…………………..26
2.10 Flink 中的数据一致性………………27
2.10.1 有状态计算……………………………. 27
2.10.2 数据一致性……………………………. 28
2.10.3 异步屏障快照机制…………………. 28
2.11 本章小结 ……………………………..29
2.12 习题……………………………………29
第 3 章 大数据实验环境搭建 …30
3.1 Linux 系统的安装…………………….30
3.1.1 下载安装文件………………………….. 30
3.1.2 Linux 系统的安装方式…………….. 31
3.1.3 安装 Linux 系统………………………. 32
3.2 Hadoop 的安装 ………………………38
3.2.1 Hadoop 版本简介 ……………………. 38
3.2.2 安装 Hadoop 前的准备工作……… 38
3.2.3 安装 Hadoop 的 3 种模式 ………… 41
3.2.4 下载 Hadoop 安装文件 ……………. 41
3.2.5 单机模式配置………………………….. 41
3.2.6 伪分布式模式配置…………………… 42
3.2.7 分布式模式配置………………………. 45
3.3 MySQL 的安装……………………….56
3.3.1 执行安装命令………………………….. 56
3.3.2 启动 MySQL 服务 …………………… 56
3.3.3 进入 MySQL Shell 界面……………56
3.3.4 解决 MySQL 出现的中文乱码
问题………………………………………… 57
3.4 Kafka 的安装………………………….58
3.4.1 Kafka 简介………………………………58
3.4.2 Kafka 的安装和使用 ………………..59
3.5 本章小结 ……………………………….60
3.6 习题……………………………………..60
实验 1 Linux、Hadoop 和 MySQL 的安装和使用 ………………………………60
第 4 章 Flink 环境搭建和使用方法……………………63
4.1 安装单机模式 Flink…………………..63
4.1.1 基础环境………………………………….63
4.1.2 安装 Java 环境…………………………63
4.1.3 下载安装文件…………………………..64
4.1.4 修改配置文件…………………………..64
4.1.5 启动 Flink………………………………..64
4.1.6 查看 Web 管理页面………………….65
4.1.7 运行样例程序…………………………..65
4.1.8 停止 Flink………………………………..65
4.2 使用 IntelliJ IDEA 开发 Flink 应用程序…………………………………….65
4.2.1 下载和安装 IDEA …………………….66
4.2.2 启动 IDEA ……………………………….66
4.2.3 使用 IDEA 开发 WordCount程序…………………………………………66
4.3 向 Flink 提交运行程序……………….70
4.3.1 使用命令提交运行程序 …………….70
4.3.2 在 Web 管理页面中提交运行程序………………………………………… 71
4.4 设置任务并行度……………………….73
4.5 Flink 集群(Standalone 模式)搭建……………………………………..74
4.5.1 配置集群基础………………………….. 74
4.5.2 在集群中安装 Java 环境………….. 75
4.5.3 设置 SSH 无密码登录 ……………… 75
4.5.4 安装和配置 Flink…………………….. 75
4.5.5 启动 Flink 集群……………………….. 77
4.5.6 查看 Flink 集群信息………………… 77
4.5.7 运行 WordCount 样例程序 ……… 78
4.5.8 关闭 Flink 集群……………………….. 79
4.6 运行模式 ……………………………….79
4.6.1 会话模式…………………………………. 79
4.6.2 单作业模式……………………………… 80
4.6.3 应用模式…………………………………. 80
4.7 Standalone 部署模式下的不同运行模式…………………………………… 81
4.8 YARN 部署模式下的不同运行模式…………………………………… 81
4.8.1 YARN 模式集群配置 ………………. 82
4.8.2 配置会话模式………………………….. 83
4.8.3 配置单作业模式………………………. 85
4.8.4 配置应用模式………………………….. 86
4.9 历史服务器…………………………….87
4.10 本章小结 ……………………………. 88
4.11 习题………………………………….. 88
实验 2 Flink 的安装和使用……………… 89
第 5 章 DataStream API…..90
5.1 DataStream 编程模型…………….. 90
5.1.1 数据源…………………………………….. 91
5.1.2 数据转换………………………………..100
5.1.3 数据输出……………………………….. 123
5.2 窗口的划分 …………………………..126
5.3 时间概念 ……………………………..127
5.4 窗口计算 ……………………………..128
5.4.1 窗口计算程序的结构 ………………128
5.4.2 窗口分配器…………………………….129
5.4.3 窗口计算函数…………………………132
5.4.4 触发器……………………………………140
5.4.5 驱逐器……………………………………143
5.5 水位线 ………………………………..146
5.5.1 水位线原理…………………………….146
5.5.2 水位线的设置方法 ………………….149
5.5.3 内置水位线生成策略 ………………149
5.6 延迟到达数据处理 ………………….162
5.7 基于双流的合并……………………..165
5.7.1 窗口连接………………………………..165
5.7.2 间隔连接………………………………..167
5.8 状态编程 ……………………………..171
5.8.1 状态的定义…………………………….172
5.8.2 状态的类型…………………………….172
5.8.3 键控状态………………………………..174
5.9 处理函数 ……………………………..183
5.9.1 处理函数的功能和作用 …………..183
5.9.2 处理函数的分类……………………..184
5.9.3 KeyedProcessFunction………….184
5.9.4 ProcessAllWindowFunction …… 189
5.9.5 KeyedProcessFunction………….192
5.10 本章小结 ……………………………198
5.11 习题………………………………….198
实验 3 Flink DataStream API 编程实践………………………………..198
第 6 章 Table API&SQL …203
6.1 流处理中的表………………………..203
6.1.1 传统关系数据库的 SQL 处理流处理的区别 …………………………………..203
6.1.2 动态表和持续查询………………….204
6.1.3 将流转换为动态表………………….204
6.1.4 用 SQL 持续查询……………………205
6.1.5 将动态表转换为流………………….206
6.2 编程模型 ……………………………..207
6.2.1 程序执行原理…………………………207
6.2.2 程序结构………………………………..208
6.2.3 TableEnvironment………………..210
6.2.4 输入数据………………………………..210
6.2.5 查询表…………………………………… 215
6.2.6 输出数据……………………………….. 218
6.2.7 表和 DataStream 的相互转换 ……………………………………… 221
6.2.8 时间属性……………………………….. 223
6.3 Table API……………………………224
6.3.1 Table API 应用实例………………. 224
6.3.2 扫描、投影和过滤…………………. 225
6.3.3 列操作…………………………………… 226
6.3.4 聚合操作……………………………….. 227
6.3.5 连接操作……………………………….. 229
6.3.6 集合操作………………………………..230
6.3.7 排序操作……………………………….. 231
6.3.8 插入操作……………………………….. 231
6.3.9 滚动窗口……………………………….. 231
6.3.10 滑动窗口 …………………………….. 231
6.3.11 会话窗口……………………………… 232
6.3.12 基于行的操作………………………. 232
6.4 SQL …………………………………..239
6.4.1 Flink SQL Client…………………… 239
6.4.2 数据定义……………………………….. 241
6.4.3 数据查询与过滤操作 ………………245
6.4.4 聚合操作………………………………..245
6.4.5 连接操作………………………………..249
6.4.6 集合操作………………………………..250
6.5 Catalog………………………………251
6.5.1 Catalog 的分类 ………………………251
6.5.2 JdbcCatalog …………………………..252
6.6 自定义函数…………………………..253
6.6.1 标量函数………………………………..253
6.6.2 表值函数……………………………….. 255
6.6.3 聚合函数……………………………….. 256
6.6.4 表聚合函数……………………………. 257
6.7 本章小结 ……………………………..259
6.8 习题……………………………………259
实验 4 Table API&SQL 编程实践……259
参考文献 ……………………….264