Skip to content

Latest commit

 

History

History
258 lines (257 loc) · 8.22 KB

目录.md

File metadata and controls

258 lines (257 loc) · 8.22 KB

第1章 Apache Flink介绍

  • 1.1 Apache Flink简介
  • 1.1.1 Apache Flink是什么
  • 1.1.2 Apache Flink应用场景
  • 1.2 Apache Flink组件
  • 1.2.1 分层API 6
  • 1.2.2 作业管理器、任务管理器、客户端

第2章 Apache Flink的安装与部署

  • 2.1 本地模式
  • 2.2 Standalone模式
  • 2.3 YARN模式
  • 2.4 Flink集群高可用

第3章 Apache Flink的基础概念和通用API 34

  • 3.1 基础概念 34
  • 3.1.1 数据集和数据流 34
  • 3.1.2 Flink程序的组成 35
  • 3.1.3 延迟计算 37
  • 3.1.4 指定分组数据集合的键 37
  • 3.1.5 指定转换函数 40
  • 3.1.6 支持的数据类型 41
  • 3.2 Flink程序模型 45
  • 3.2.1 程序和数据流 45
  • 3.2.2 并行数据流 46
  • 3.2.3 窗口 47
  • 3.2.4 时间 48
  • 3.2.5 有状态计算 49
  • 3.2.6 容错检查点 49
  • 3.2.7 状态后端 50
  • 3.2.8 保存点 51
  • 3.3 Flink程序的分布式执行模型 51
  • 3.3.1 任务和任务链 51
  • 3.2.2 任务槽和资源 52
  • 3.4 Java的Lambda表达式 54
  • 3.4.1 类型擦除 55
  • 3.4.2 类型提示 56

第4章 流处理基础操作 58

  • 4.1 DataStream的基本概念 58
  • 4.1.1 流处理示例程序 58
  • 4.1.2 数据源 62
  • 4.1.3 数据流的转换操作 67
  • 4.1.4 数据接收器 67
  • 4.2 数据流基本操作 70
  • 4.2.1 Map 70
  • 4.2.2 FlatMap 71
  • 4.2.3 Filter 73
  • 4.2.4 KeyBy 74
  • 4.2.5 Reduce 75
  • 4.2.6 Aggregations 77
  • 4.2.7 Split和Select 79
  • 4.2.8 Project 81
  • 4.2.9 Union 82
  • 4.2.10 Connect和CoMap、CoFlatMap 83
  • 4.2.11 Iterate 86
  • 4.3 富函数 89
  • 4.3.1 基本概念 89
  • 4.3.2 代码演示 90
  • 4.4 任务链和资源组 92
  • 4.4.1 默认链接 93
  • 4.4.2 开启新链接 96
  • 4.4.3 禁用链接 98
  • 4.4.4 设置任务槽共享组 101
  • 4.5 物理分区 102
  • 4.5.1 自定义分区策略 103
  • 4.5.2 shuffle分区策略 108
  • 4.5.3 broadcast分区策略 110
  • 4.5.4 rebalance分区策略 111
  • 4.5.5 rescale分区策略 115
  • 4.5.6 forward分区策略 118
  • 4.5.7 global分区策略 120
  • 4.6 流处理的本地测试 121
  • 4.6.1 本地执行环境 121
  • 4.6.2 集合支持的数据源和数据接收器 122
  • 4.6.3 单元测试 123
  • 4.6.4 集成测试 123
  • 4.7 分布式缓存 125
  • 4.7.1 注册分布式缓存文件 125
  • 4.7.2 访问分布式缓存文件 126
  • 4.7.3 BLOB服务的配置参数 128
  • 4.7.4 部署到集群中运行 131
  • 4.8 将参数传递给函数 133
  • 4.8.1 通过构造函数传递参数 133
  • 4.8.2 使用ExecutionConfig传递参数 135
  • 4.8.3 将命令行参数传递给函数 137

第5章 流处理中的状态和容错 140

  • 5.1 有状态计算 140
  • 5.1.1 Operator状态和Keyed状态 141
  • 5.1.2 托管的Keyed状态 142
  • 5.1.3 托管的Operator状态 157
  • 5.2 检查点机制 168
  • 5.2.1 先决条件 168
  • 5.2.2 启用和配置检查点机制 168
  • 5.2.3 目录结构 170
  • 5.2.4 其他相关的配置选项 170
  • 5.3 状态后端 171
  • 5.3.1 MemoryStateBackend 172
  • 5.3.2 FsStateBackend 173
  • 5.3.3 RocksDBStateBackend 174
  • 5.3.4 配置状态后端 175
  • 5.4 保存点机制 176
  • 5.4.1 分配操作符id 177
  • 5.4.2 保存点映射 177
  • 5.4.3 保存点操作 177
  • 5.4.4 保存点配置 182
  • 5.5 广播状态 183
  • 5.5.1 前置条件 183
  • 5.5.2 广播函数 185
  • 5.5.3 代码实现 189
  • 5.6 调优检查点和大状态 192
  • 5.6.1 监视状态和检查点 192
  • 5.6.2 调优检查点 192
  • 5.6.3 使用异步检查点操作 193
  • 5.6.4 调优RocksDB 194
  • 5.6.5 容量规划 196
  • 5.6.6 压缩 197

第6章 流处理高级操作 198

  • 6.1 窗口 198
  • 6.1.1 窗口的基本概念 198
  • 6.1.2 窗口分配器 201
  • 6.1.3 窗口函数 211
  • 6.1.4 窗口触发器 224
  • 6.1.5 窗口剔除器 230
  • 6.1.6 允许数据延迟 234
  • 6.1.7 窗口的快速实现方法 236
  • 6.1.8 查看窗口使用组件 237
  • 6.2 时间 239
  • 6.2.1 时间语义 240
  • 6.2.2 事件时间与水印 241
  • 6.2.3 设置时间特性 243
  • 6.3 数据流的连接操作 255
  • 6.3.1 窗口Join 255
  • 6.3.2 窗口CoGroup 262
  • 6.3.3 间隔Join 265
  • 6.4 侧端输出 267
  • 6.4.1 基于复制数据流的方案 267
  • 6.4.2 基于Split和Select的方案 268
  • 6.4.3 基于侧端输出的方案 270
  • 6.5 ProcessFunction 273
  • 6.5.1 基本概念 273
  • 6.5.2 计时器 278
  • 6.6 自定义数据源函数 279
  • 6.6.1 SourceFunction接口 279
  • 6.6.2 ParallelSourceFunction接口 283
  • 6.6.3 RichParallelSourceFunction抽象类 284
  • 6.6.4 具备检查点特性的数据源函数 286
  • 6.7 自定义数据接收器函数 287
  • 6.7.1 SinkFunction接口 287
  • 6.7.2 RichSinkFunction抽象类 289
  • 6.8 数据流连接器 290
  • 6.8.1 内置连接器 290
  • 6.8.2 数据源和数据接收器的容错保证 291
  • 6.8.3 Kafka连接器 291
  • 6.8.4 安装Kafka的注意事项 293
  • 6.8.5 Kafka 1.0.0+ 连接器 293
  • 6.8.6 Kafka消费者 294
  • 6.8.7 Kafka生产者 307
  • 6.8.8 Kafka连接器指标 317

第7章 批处理基础操作 320

  • 7.1 DataSet的基本概念 320
  • 7.1.1 批处理示例程序 320
  • 7.1.2 数据源 324
  • 7.1.3 数据接收器 327
  • 7.2 数据集的基本操作 328
  • 7.3 将参数传递给函数 344
  • 7.4 广播变量 346
  • 7.4.1 注册广播变量 346
  • 7.4.2 访问广播变量 347
  • 7.4.3 代码实现 347
  • 7.5 物理分区 349
  • 7.5.1 Rebalance 350
  • 7.5.2 PartitionByHash 351
  • 7.5.3 PartitionByRange 352
  • 7.5.4 SortPartition 354
  • 7.6 批处理的本地测试 355
  • 7.6.1 本地执行环境 355
  • 7.6.2 集合支持的数据源和数据接收器 355

第8章 Table API和SQL 357

  • 8.1 基础概念和通用API 357
  • 8.1.1 添加依赖 357
  • 8.1.2 第一个Hello World表程序 358
  • 8.1.3 表程序的公共结构 359
  • 8.1.4 创建一个TableEnvironment 360
  • 8.1.5 在目录中注册表 361
  • 8.1.6 查询一个表 365
  • 8.1.7 DataStream和DataSet API的集成 366
  • 8.1.8 数据类型到表模式的映射 370
  • 8.1.9 查询优化 373
  • 8.2 SQL 374
  • 8.2.1 指定一个查询 375
  • 8.2.2 SQL支持的语法 376
  • 8.2.3 SQL操作 376
  • 8.2.4 数据类型 386
  • 8.2.5 保留关键字 387
  • 8.3 Table API 387
  • 8.4 自定义函数 388
  • 8.4.1 标量函数 389
  • 8.4.2 表函数 390
  • 8.4.3 聚合函数 392
  • 8.4.4 自定义函数与运行环境集成 394
  • 8.5 SQL客户端 396
  • 8.5.1 启动SQL客户端 396
  • 8.5.2 配置参数 399
  • 8.5.3 分离的SQL查询 406
  • 8.5.4 SQL客户端中的视图 407
  • 8.5.5 SQL客户端中的时态表 408

第9章 流处理中的Table API和SQL 410

  • 9.1 动态表 410
  • 9.1.1 动态表和连续查询 410
  • 9.1.2 在数据流中定义动态表 411
  • 9.1.3 动态表到数据流的转换 416
  • 9.2 时间属性 418
  • 9.2.1 基本概念 418
  • 9.2.2 组窗口 418
  • 9.2.3 处理时间 420
  • 9.2.4 事件时间 422
  • 9.3 动态表的Join 423
  • 9.3.1 常规Join 423
  • 9.3.2 时间窗口Join 426
  • 9.4 时态表 429
  • 9.4.1 需求背景 429
  • 9.4.2 时态表函数 430
  • 9.5 查询配置 435
  • 9.5.1 查询配置对象 435
  • 9.5.2 空闲状态保留时间 436
  • 9.6 连接外部系统 436
  • 9.6.1 概述 437
  • 9.6.2 表模式 439
  • 9.6.3 更新模式 440
  • 9.6.4 表格式 441
  • 9.6.5 表连接器 442
  • 9.6.6 未统一的TableSources和TableSinks 448

第10章 执行管理 452

  • 10.1 执行参数 452
  • 10.1.1 在ExecutionEnvironment中设置参数 452
  • 10.1.2 在ExecutionConfig中设置参数 453
  • 10.2 并行执行 455
  • 10.2.1 操作符级别 455
  • 10.2.2 执行环境级别 455
  • 10.2.3 客户端级别 456
  • 10.2.4 系统级别 457
  • 10.2.5 设置最大并行度 457
  • 10.3 重启策略 457
  • 10.3.1 固定延迟重启策略 458
  • 10.3.2 故障率重启策略 459
  • 10.3.3 没有重新启动策略 460
  • 10.3.4 回退重启策略 461
  • 10.4 程序打包和部署 461
  • 10.4.1 打包Flink程序 462
  • 10.4.2 Web UI(Web管控台)提交 462
  • 10.4.3 命令行客户端提交 466
  • 10.5 命令行接口 466
  • 10.5.1 将Flink程序提交到Flink集群 467
  • 10.5.2 列出集群中的作业 468
  • 10.5.3 调整集群中的作业 469
  • 10.5.4 保存点操作命令 471
  • 10.6 执行计划 473
  • 10.6.1 在线可视化工具 473
  • 10.6.2 Web管控台可视化 474