剑指大数据——Flink学习精要(Java版)

剑指大数据——Flink学习精要(Java版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-02
版次: 1
ISBN: 9787121429125
定价: 105.00
装帧: 其他
页数: 348页
14人买过
  • 本书基于Flink的稳定版本1.13,从Flink数据处理思想开始讲解,带领读者深入理解Flink的基本架构,进而由浅入深,结合具体案例,详细剖析了Flink中DataStream API的使用,并对Flink中的时间语义、状态、容错机制等重要概念进行了详尽的阐述。另外,本书还对实际开发中常用的Flink SQL、CEP等高层级API进行了细致的讲解,以电商网站中的实际应用为场景,提供了大量的代码实现。本书分为三大部分:第1~5章,带领读者初步认识Flink并编写基本的Flink程序;第6~10章,深入探讨了Flink内部的高级应用;第11~12章,讲解了Flink提供的扩展功能。本书广泛适用于大数据的学习者与从业人员,以及院校大数据相关专业的学生,也可作为大数据学习的参考书。 尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。 第1章  初识Flink1

    1.1 Flink的起源和设计理念1

    1.2 Flink的应用3

    1.2.1  Flink在企业中的应用3

    1.2.2  Flink主要的应用场景3

    1.3 流式数据处理的发展和演变4

    1.3.1  流处理和批处理5

    1.3.2  传统事务处理6

    1.3.3  有状态的流处理6

    1.3.4  Lambda架构9

    1.3.5  新一代流处理器10

    1.4 Flink的特性总结10

    1.4.1  Flink的核心特性10

    1.4.2  分层API10

    1.5 Flink与Spark11

    1.5.1  数据处理架构12

    1.5.2  数据模型和运行架构13

    1.5.3  Spark还是Flink13

    1.6 本章总结14

    第2章  Flink快速上手15

    2.1 环境准备15

    2.2 创建项目15

    2.3 编写代码18

    2.3.1  批处理18

    2.3.2  流处理20

    2.4 本章总结23

    第3章  Flink部署25

    3.1 快速启动一个Flink集群26

    3.1.1  环境配置26

    3.1.2  本地启动26

    3.1.3  集群启动27

    3.1.4  向集群提交作业29

    3.2 部署模式32

    3.2.1  会话模式33

    3.2.2  单作业模式33

    3.2.3  应用模式34

    3.3 独立模式34

    3.3.1  会话模式部署35

    3.3.2  单作业模式部署35

    3.3.3  应用模式部署35

    3.3.4  高可用35

    3.4 YARN模式37

    3.4.1  相关准备和配置37

    3.4.2  会话模式部署38

    3.4.3  单作业模式部署39

    3.4.4  应用模式部署40

    3.4.5  高可用40

    3.5 K8s模式41

    3.6 本章总结41

    第4章  Flink运行时架构42

    4.1 系统架构42

    4.1.1  整体构成42

    4.1.2  JobManager43

    4.1.3  TaskManager44

    4.2 作业提交流程45

    4.2.1  高层级抽象视角45

    4.2.2  独立模式45

    4.2.3  YARN集群46

    4.3 一些重要概念48

    4.3.1  数据流图48

    4.3.2  并行度49

    4.3.3  算子链51

    4.3.4  作业图与执行图53

    4.3.5  任务和任务槽55

    4.4 本章总结60

    第5章  DataStream API(基础篇)61

    5.1 执行环境61

    5.1.1  创建执行环境62

    5.1.2  执行模式62

    5.1.3  触发程序执行64

    5.2 源算子64

    5.2.1  准备工作64

    5.2.2  从集合中读取数据65

    5.2.3  从文件中读取数据66

    5.2.4  从Socket中读取数据67

    5.2.5  从Kafka中读取数据67

    5.2.6  自定义源算子69

    5.2.7  Flink支持的数据类型71

    5.3 转换算子73

    5.3.1  基本转换算子73

    5.3.2  聚合算子76

    5.3.3  用户自定义函数81

    5.3.4  物理分区算子87

    5.4 输出算子93

    5.4.1  连接到外部系统93

    5.4.2  输出到文件94

    5.4.3  输出到Kafka96

    5.4.4  输出到Redis97

    5.4.5  输出到ElasticSearch99

    5.4.6  输出到MySQL(JDBC)101

    5.4.7  自定义Sink输出102

    5.5 本章总结104

    第6章  Flink中的时间和窗口105

    6.1 时间语义105

    6.1.1  Flink中的时间语义105

    6.1.2  哪种时间语义更重要107

    6.2 水位线108

    6.2.1  事件时间和窗口108

    6.2.2  什么是水位线110

    6.2.3  如何生成水位线114

    6.2.4  水位线的传递120

    6.2.5  水位线的总结121

    6.3 窗口122

    6.3.1  窗口的概念122

    6.3.2  窗口的分类124

    6.3.3  窗口API概览128

    6.3.4  窗口分配器129

    6.3.5  窗口函数131

    6.3.6  测试水位线和窗口的使用142

    6.3.7  其他API144

    6.3.8  窗口的生命周期148

    6.4 迟到数据的处理150

    6.4.1  设置水位线延迟时间150

    6.4.2  允许窗口处理迟到数据150

    6.4.3  将迟到数据放入窗口侧输出流151

    6.5 本章总结154

    第7章  处理函数155

    7.1 基本处理函数155

    7.1.1  处理函数的功能和使用155

    7.1.2  ProcessFunction解析157

    7.1.3  处理函数的分类158

    7.2 KeyedProcessFunction159

    7.2.1  定时器和定时服务159

    7.2.2  KeyedProcessFunction的使用160

    7.3 窗口处理函数164

    7.3.1  窗口处理函数的使用164

    7.3.2  ProcessWindowFunction解析164

    7.4 应用案例——Top N166

    7.4.1  使用ProcessAllWindowFunction166

    7.4.2  使用KeyedProcessFunction168

    7.5 侧输出流173

    7.6 本章总结174

    第8章  多流转换175

    8.1 分流175

    8.1.1  简单实现175

    8.1.2  使用侧输出流177

    8.2 基本合流操作178

    8.2.1  联合178

    8.2.2  连接182

    8.3 基于时间的合流——双流联结188

    8.3.1  窗口联结188

    8.3.2  间隔联结192

    8.3.3  窗口同组联结195

    8.4 本章总结197

    第9章  状态编程198

    9.1 Flink中的状态198

    9.1.1  有状态算子198

    9.1.2  状态的管理199

    9.1.3  状态的分类200

    9.2 按键分区状态201

    9.2.1  基本概念和特点201

    9.2.2  支持的结构类型202

    9.2.3  代码实现204

    9.2.4  状态生存时间213

    9.3 算子状态214

    9.3.1  基本概念和特点214

    9.3.2  状态类型215

    9.3.3  代码实现216

    9.4 广播状态219

    9.4.1  基本用法219

    9.4.2  代码实例220

    9.5 状态持久化和状态后端223

    9.5.1  检查点223

    9.5.2  状态后端224

    9.6 本章总结226

    第10章  容错机制227

    10.1 检查点227

    10.1.1  检查点的保存228

    10.1.2  从检查点恢复状态230

    10.1.3  检查点算法232

    10.1.4  检查点配置237

    10.1.5  保存点239

    10.2 状态一致性240

    10.2.1  一致性的概念和级别240

    10.2.2  端到端的状态一致性241

    10.3 端到端的精确一次241

    10.3.1  输入端保证242

    10.3.2  输出端保证242

    10.3.3  Flink和Kafka连接时的精确一次保证244

    10.4 本章总结248

    第11章  Table API和SQL249

    11.1 快速上手250

    11.1.1  需要引入的依赖250

    11.1.2  一个简单示例251

    11.2 基本API252

    11.2.1  程序架构252

    11.2.2  创建表环境253

    11.2.3  创建表254

    11.2.4  表的查询255

    11.2.5  输出表257

    11.2.6  表和流的转换257

    11.3 流处理中的表262

    11.3.1  动态表和持续查询262

    11.3.2  将流转换成动态表263

    11.3.3  用SQL持续查询265

    11.3.4  将动态表转换为流269

    11.4 时间属性和窗口270

    11.4.1  事件时间271

    11.4.2  处理时间272

    11.4.3  窗口273

    11.5 聚合查询275

    11.5.1  分组聚合275

    11.5.2  窗口聚合276

    11.5.3  开窗聚合279

    11.5.4  应用实例——Top N280

    11.6 联结查询284

    11.6.1  常规联结查询284

    11.6.2  间隔联结查询285

    11.7 函数286

    11.7.1  系统函数287

    11.7.2  自定义函数288

    11.8 SQL客户端294

    11.9 连接到外部系统296

    11.9.1  Kafka296

    11.9.2  文件系统298

    11.9.3  JDBC299

    11.9.4  ElasticSearch300

    11.9.5  HBase300

    11.9.6  Hive301

    11.10 本章总结304

    第12章  Flink CEP306

    12.1 基本概念306

    12.1.1  CEP是什么306

    12.1.2  模式307

    12.1.3  应用场景307

    12.2 快速上手308

    12.2.1  需要引入的依赖308

    12.2.2  一个简单实例308

    12.3 模式API311

    12.3.1  个体模式311

    12.3.2  组合模式316

    12.3.3  模式组319

    12.3.4  匹配后跳过策略320

    12.4 模式的检测处理321

    12.4.1  将模式应用到流上321

    12.4.2  处理匹配事件321

    12.4.3  处理超时事件324

    12.4.4  处理迟到数据329

    12.5 CEP的状态机实现330

    12.6 本章总结334
  • 内容简介:
    本书基于Flink的稳定版本1.13,从Flink数据处理思想开始讲解,带领读者深入理解Flink的基本架构,进而由浅入深,结合具体案例,详细剖析了Flink中DataStream API的使用,并对Flink中的时间语义、状态、容错机制等重要概念进行了详尽的阐述。另外,本书还对实际开发中常用的Flink SQL、CEP等高层级API进行了细致的讲解,以电商网站中的实际应用为场景,提供了大量的代码实现。本书分为三大部分:第1~5章,带领读者初步认识Flink并编写基本的Flink程序;第6~10章,深入探讨了Flink内部的高级应用;第11~12章,讲解了Flink提供的扩展功能。本书广泛适用于大数据的学习者与从业人员,以及院校大数据相关专业的学生,也可作为大数据学习的参考书。
  • 作者简介:
    尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
  • 目录:
    第1章  初识Flink1

    1.1 Flink的起源和设计理念1

    1.2 Flink的应用3

    1.2.1  Flink在企业中的应用3

    1.2.2  Flink主要的应用场景3

    1.3 流式数据处理的发展和演变4

    1.3.1  流处理和批处理5

    1.3.2  传统事务处理6

    1.3.3  有状态的流处理6

    1.3.4  Lambda架构9

    1.3.5  新一代流处理器10

    1.4 Flink的特性总结10

    1.4.1  Flink的核心特性10

    1.4.2  分层API10

    1.5 Flink与Spark11

    1.5.1  数据处理架构12

    1.5.2  数据模型和运行架构13

    1.5.3  Spark还是Flink13

    1.6 本章总结14

    第2章  Flink快速上手15

    2.1 环境准备15

    2.2 创建项目15

    2.3 编写代码18

    2.3.1  批处理18

    2.3.2  流处理20

    2.4 本章总结23

    第3章  Flink部署25

    3.1 快速启动一个Flink集群26

    3.1.1  环境配置26

    3.1.2  本地启动26

    3.1.3  集群启动27

    3.1.4  向集群提交作业29

    3.2 部署模式32

    3.2.1  会话模式33

    3.2.2  单作业模式33

    3.2.3  应用模式34

    3.3 独立模式34

    3.3.1  会话模式部署35

    3.3.2  单作业模式部署35

    3.3.3  应用模式部署35

    3.3.4  高可用35

    3.4 YARN模式37

    3.4.1  相关准备和配置37

    3.4.2  会话模式部署38

    3.4.3  单作业模式部署39

    3.4.4  应用模式部署40

    3.4.5  高可用40

    3.5 K8s模式41

    3.6 本章总结41

    第4章  Flink运行时架构42

    4.1 系统架构42

    4.1.1  整体构成42

    4.1.2  JobManager43

    4.1.3  TaskManager44

    4.2 作业提交流程45

    4.2.1  高层级抽象视角45

    4.2.2  独立模式45

    4.2.3  YARN集群46

    4.3 一些重要概念48

    4.3.1  数据流图48

    4.3.2  并行度49

    4.3.3  算子链51

    4.3.4  作业图与执行图53

    4.3.5  任务和任务槽55

    4.4 本章总结60

    第5章  DataStream API(基础篇)61

    5.1 执行环境61

    5.1.1  创建执行环境62

    5.1.2  执行模式62

    5.1.3  触发程序执行64

    5.2 源算子64

    5.2.1  准备工作64

    5.2.2  从集合中读取数据65

    5.2.3  从文件中读取数据66

    5.2.4  从Socket中读取数据67

    5.2.5  从Kafka中读取数据67

    5.2.6  自定义源算子69

    5.2.7  Flink支持的数据类型71

    5.3 转换算子73

    5.3.1  基本转换算子73

    5.3.2  聚合算子76

    5.3.3  用户自定义函数81

    5.3.4  物理分区算子87

    5.4 输出算子93

    5.4.1  连接到外部系统93

    5.4.2  输出到文件94

    5.4.3  输出到Kafka96

    5.4.4  输出到Redis97

    5.4.5  输出到ElasticSearch99

    5.4.6  输出到MySQL(JDBC)101

    5.4.7  自定义Sink输出102

    5.5 本章总结104

    第6章  Flink中的时间和窗口105

    6.1 时间语义105

    6.1.1  Flink中的时间语义105

    6.1.2  哪种时间语义更重要107

    6.2 水位线108

    6.2.1  事件时间和窗口108

    6.2.2  什么是水位线110

    6.2.3  如何生成水位线114

    6.2.4  水位线的传递120

    6.2.5  水位线的总结121

    6.3 窗口122

    6.3.1  窗口的概念122

    6.3.2  窗口的分类124

    6.3.3  窗口API概览128

    6.3.4  窗口分配器129

    6.3.5  窗口函数131

    6.3.6  测试水位线和窗口的使用142

    6.3.7  其他API144

    6.3.8  窗口的生命周期148

    6.4 迟到数据的处理150

    6.4.1  设置水位线延迟时间150

    6.4.2  允许窗口处理迟到数据150

    6.4.3  将迟到数据放入窗口侧输出流151

    6.5 本章总结154

    第7章  处理函数155

    7.1 基本处理函数155

    7.1.1  处理函数的功能和使用155

    7.1.2  ProcessFunction解析157

    7.1.3  处理函数的分类158

    7.2 KeyedProcessFunction159

    7.2.1  定时器和定时服务159

    7.2.2  KeyedProcessFunction的使用160

    7.3 窗口处理函数164

    7.3.1  窗口处理函数的使用164

    7.3.2  ProcessWindowFunction解析164

    7.4 应用案例——Top N166

    7.4.1  使用ProcessAllWindowFunction166

    7.4.2  使用KeyedProcessFunction168

    7.5 侧输出流173

    7.6 本章总结174

    第8章  多流转换175

    8.1 分流175

    8.1.1  简单实现175

    8.1.2  使用侧输出流177

    8.2 基本合流操作178

    8.2.1  联合178

    8.2.2  连接182

    8.3 基于时间的合流——双流联结188

    8.3.1  窗口联结188

    8.3.2  间隔联结192

    8.3.3  窗口同组联结195

    8.4 本章总结197

    第9章  状态编程198

    9.1 Flink中的状态198

    9.1.1  有状态算子198

    9.1.2  状态的管理199

    9.1.3  状态的分类200

    9.2 按键分区状态201

    9.2.1  基本概念和特点201

    9.2.2  支持的结构类型202

    9.2.3  代码实现204

    9.2.4  状态生存时间213

    9.3 算子状态214

    9.3.1  基本概念和特点214

    9.3.2  状态类型215

    9.3.3  代码实现216

    9.4 广播状态219

    9.4.1  基本用法219

    9.4.2  代码实例220

    9.5 状态持久化和状态后端223

    9.5.1  检查点223

    9.5.2  状态后端224

    9.6 本章总结226

    第10章  容错机制227

    10.1 检查点227

    10.1.1  检查点的保存228

    10.1.2  从检查点恢复状态230

    10.1.3  检查点算法232

    10.1.4  检查点配置237

    10.1.5  保存点239

    10.2 状态一致性240

    10.2.1  一致性的概念和级别240

    10.2.2  端到端的状态一致性241

    10.3 端到端的精确一次241

    10.3.1  输入端保证242

    10.3.2  输出端保证242

    10.3.3  Flink和Kafka连接时的精确一次保证244

    10.4 本章总结248

    第11章  Table API和SQL249

    11.1 快速上手250

    11.1.1  需要引入的依赖250

    11.1.2  一个简单示例251

    11.2 基本API252

    11.2.1  程序架构252

    11.2.2  创建表环境253

    11.2.3  创建表254

    11.2.4  表的查询255

    11.2.5  输出表257

    11.2.6  表和流的转换257

    11.3 流处理中的表262

    11.3.1  动态表和持续查询262

    11.3.2  将流转换成动态表263

    11.3.3  用SQL持续查询265

    11.3.4  将动态表转换为流269

    11.4 时间属性和窗口270

    11.4.1  事件时间271

    11.4.2  处理时间272

    11.4.3  窗口273

    11.5 聚合查询275

    11.5.1  分组聚合275

    11.5.2  窗口聚合276

    11.5.3  开窗聚合279

    11.5.4  应用实例——Top N280

    11.6 联结查询284

    11.6.1  常规联结查询284

    11.6.2  间隔联结查询285

    11.7 函数286

    11.7.1  系统函数287

    11.7.2  自定义函数288

    11.8 SQL客户端294

    11.9 连接到外部系统296

    11.9.1  Kafka296

    11.9.2  文件系统298

    11.9.3  JDBC299

    11.9.4  ElasticSearch300

    11.9.5  HBase300

    11.9.6  Hive301

    11.10 本章总结304

    第12章  Flink CEP306

    12.1 基本概念306

    12.1.1  CEP是什么306

    12.1.2  模式307

    12.1.3  应用场景307

    12.2 快速上手308

    12.2.1  需要引入的依赖308

    12.2.2  一个简单实例308

    12.3 模式API311

    12.3.1  个体模式311

    12.3.2  组合模式316

    12.3.3  模式组319

    12.3.4  匹配后跳过策略320

    12.4 模式的检测处理321

    12.4.1  将模式应用到流上321

    12.4.2  处理匹配事件321

    12.4.3  处理超时事件324

    12.4.4  处理迟到数据329

    12.5 CEP的状态机实现330

    12.6 本章总结334
查看详情