第1篇 准备 2
第1章 了解消息队列和Kafka 2
1.1 本章教学视频说明 2
1.2 消息队列 2
1.2.1 什么是消息队列 3
1.2.2 消息队列主要有哪些作用 3
1.3 为什么需要Kafka 6
1.4 Kafka的基本概念 7
1.4.1 代理、生产者、消费者、消费者组 7
1.4.2 主题、分区、副本、记录 8
1.5 了解Kafka的工作机制——生产消息/消费消息 9
1.6 Kafka的使用范围 10
1.6.1 Kafka的设计初衷 10
1.6.2 Kafka的特性 11
1.6.3 Kafka适用于哪些场景 13
1.7 小结 14
第2章 安装及配置Kafka 15
2.1 本章教学视频说明 15
2.2 安装与配置基础环境 16
2.2.1 安装并配置Linux操作系统 16
2.2.2 实例1:安装与配置Java运行环境 18
2.2.3 实例2:配置SSH免密码登录 21
2.2.4 实例3:安装与配置Zookeeper 23
2.3 实例4:部署Kafka 27
2.3.1 单机模式部署 27
2.3.2 分布式模式部署 29
2.4 实例5:安装与配置Kafka监控工具 32
2.4.1 获取并编译Kafka Eagle源代码 32
2.4.2 安装与配置Kafka Eagle 33
2.5 实例6:编译Kafka源代码 37
2.5.1 安装与配置Scala运行环境 38
2.5.2 安装与配置Gradle 39
2.5.3 了解Kafka源代码的编译过程 40
2.6 实例7:将Kafka源代码导入编辑器 42
2.6.1 导入IntelliJ IDEA编辑器 42
2.6.2 导入Eclipse编辑器 44
2.7 了解元数据的存储分布 46
2.8 了解控制器的选举流程 48
2.8.1 了解控制器的启动顺序 48
2.8.2 了解主题分区Leader节点的选举过程 52
2.8.3 了解注册分区和副本状态机 59
2.8.4 了解分区自动均衡和分区重新分配 61
2.9 小结 66
第2篇 入门 68
第3章 Kafka的基本操作 68
3.1 本章教学视频说明 68
3.2 操作Zookeeper集群 68
3.2.1 Zookeeper的作用及背景 69
3.2.2 实例8:单机模式启动Zookeeper系统 70
3.2.3 实例9:单机模式关闭Zookeeper系统 72
3.2.4 实例10:分布式模式启动Zookeeper集群 74
3.2.5 实例11:分布式模式关闭Zookeeper集群 77
3.3 操作Kafka集群 77
3.3.1 实例12:单机模式启动Kafka系统 78
3.3.2 实例13:单机模式关闭Kafka系统 79
3.3.3 实例14:分布式模式启动Kafka集群 81
3.3.4 实例15:分布式模式关闭Kafka集群 84
3.4 管理主题 85
3.4.1 什么是主题 86
3.4.2 实例16:创建主题 87
3.4.3 实例17:查看主题 88
3.4.4 实例18:修改主题 92
3.4.5 实例19:删除主题 94
3.5 管理分区与副本 95
3.5.1 分区和副本的背景及作用 95
3.5.2 实例20:修改分区 96
3.5.3 实例21:修改副本数 97
3.6 小结 99
第4章 将消息数据写入Kafka系统——生产 100
4.1 本章教学视频说明 100
4.2 了解Kafka生产者 101
4.3 使用脚本操作生产者 101
4.3.1 实例22:通过监控工具查看消息 102
4.3.2 实例23:启动消费者程序,并查看消息 103
4.4 发送消息到Kafka主题 104
4.4.1 了解异步模式 104
4.4.2 实例24:生产者用异步模式发送消息 105
4.4.3 了解同步模式 105
4.4.4 实例25:生产者用同步模式发送消息 106
4.4.5 多线程发送消息 107
4.4.6 实例26:生产者用单线程发送消息 107
4.4.7 实例27:生产者用多线程发送消息 110
4.5 配置生产者的属性 112
4.6 保存对象的各个属性——序列化 115
4.6.1 实例28:序列化一个对象 115
4.6.2 实例29:在生产者应用程序中实现序列化 117
4.7 自定义主题分区 122
4.7.1 实例30:编写自定义主题分区的算法 122
4.7.2 实例31:演示自定义分区类的使用 123
4.8 小结 125
第5章 从Kafka系统中读取消息数据——消费 126
5.1 本章教学视频说明 126
5.2 了解Kafka消费者 126
5.2.1 为什么需要消费者组 126
5.2.1 消费者和消费者组的区别 127
5.2.2 消费者和分区的对应关系 127
5.3 使用Kafka系统的脚本操作消费者 130
5.3.1 认识消费者新接口 130
5.3.2 实例32:用新接口启动消费者程序,并查看消费者信息 131
5.3.3 实例33:用旧接口启动消费者程序,并查看消费者元数据的存储结构 134
5.4 消费Kafka集群中的主题消息 136
5.4.1 主题如何自动获取分区和手动分配分区 137
5.4.2 实例34:主题自动/手动获取分区 137
5.4.3 实例35:反序列化主题消息 140
5.4.4 如何提交消息的偏移量 145
5.4.5 实例36:使用多线程消费多个分区的主题 146
5.5 配置消费者的属性 150
5.6 小结 151
第6章 存储及管理数据 152
6.1 本章教学视频说明 152
6.2 分区存储数据 152
6.2.1 熟悉分区存储 153
6.2.2 了解消息的格式 154
6.3 清理过期数据的两种方法 155
6.4 网络模型和通信流程 156
6.4.1 基本数据类型 156
6.4.2 通信模型 157
6.4.3 通信过程 157
6.6 小结 159
第3篇 进阶 162
第7章 Kafka安全机制 162
7.1 本章教学视频说明 162
7.2 了解Kafka的安全机制 162
7.2.1 身份验证 163
7.2.2 权限控制 163
7.3 使用SSL协议进行加密和身份验证 164
7.3.1 了解SSL协议 164
7.3.2 实例37:创建SSL密钥库,并查看密钥库文件 165
7.3.3 实例38:创建私有证书 167
7.3.4 实例39:导出证书,使用CA对证书进行签名 170
7.3.5 实例40:在服务端配置SSL协议,并创建主题 173
7.3.6 实例41:在客户端配置SSL协议,并读/写数据 174
7.4 使用SASL协议进行认证 176
7.4.1 给客户端配置“Java认证和授权服务”(JAAS) 176
7.4.2 给服务端配置SASL 178
7.4.3 实例42:开启SASL/Kerberos认证协议 178
7.4.4 实例43:开启SASL/PLAIN认证协议 181
7.4.5 实例44:开启SASL/SCRAM认证协议 184
7.5 权限控制 187
7.5.1 权限控制的基础命令 187
7.5.2 配置ACL(访问控制列表) 188
7.5.3 实例45:启动集群 189
7.5.4 实例46:查看授权、添加授权、删除授权 190
7.6 小结 195
第8章 用Kafka连接器建立数据管道 196
8.1 本章教学视频说明 196
8.2 认识Kafka连接器 196
8.2.1 了解连接器的使用场景 197
8.2.2 特性及优势 198
8.2.3 连接器的几个核心概念 198
8.3 操作Kafka连接器 199
8.3.1 配置Kafka连接器的属性 199
8.3.2 认识应用接口——REST API 202
8.3.3 实例47:单机模式下,将数据导入Kafka主题中 203
8.3.4 实例48:单机模式下,将Kafka主题中的数据导出 205
8.3.5 实例49:分布式模式下,将数据导入Kafka主题 206
8.4 实例50:开发一个简易的Kafka连接器插件 210
8.4.1 编写Source连接器 211
8.4.2 编写Sink连接器 217
8.4.3 打包与部署 220
8.5 小结 225
第9章 Kafka流处理 226
9.1 本章教学视频说明 226
9.2 初识Kafka流处理 227
9.2.1 什么是流处理 227
9.2.2 什么是流式计算 227
9.2.3 为何要使用流处理 228
9.3 了解流处理的架构 229
9.3.1 流分区与任务 230
9.3.2 线程模型 232
9.3.3 本地状态存储 234
9.3.4 容错性(Failover) 235
9.4 操作KStream和KTable 235
9.4.1 流处理的核心概念 236
9.4.2 窗口操作 237
9.4.3 连接操作 241
9.4.4 转换操作 246
9.4.5 聚合操作 247
9.5 实例51:利用流处理开发一个单词统计程序 248
9.5.1 创建Kafka流主题 248
9.5.2 统计流主题中单词出现的频率 249
9.5.3 预览操作结果 250
9.6 实例52:利用Kafka流开发一个SQL引擎 251
9.6.1 构建生产流数据源 251
9.6.2 构建Kafka流处理 253
9.6.3 构建数据结构和执行SQL逻辑 254
9.6.4 观察操作结果 255
9.7 小结 256
第10章 监控与测试 257
10.1 本章教学视频说明 257
10.2 Kafka的监控工具——Kafka Eagle系统 258
10.2.1 实例53:管理主题 258
10.2.2 实例54:查看消费者组信息 259
10.2.3 实例55:查看Kafka与Zookeeper集群的状态和性能 263
10.3 测试生产者性能 264
10.3.1 了解测试环境 264
10.3.2 认识测试工具 265
10.3.3 实例56:利用工具测试生产者性能 266
10.4 测试消费者性能 275
10.4.1 了解测试环境 275
10.4.2 认识测试工具 276
10.4.3 实例57:利用脚本测试消费者的性能 276
10.4 小结 280
第4篇 商业实战 282
第11章 Kafka与ELK套件的整合 282
11.1 本章教学视频说明 282
11.2 安装与配置ELK 283
11.2.1 安装与配置LogStash 283
11.2.2 实例58:LogStash的标准输入与输出 285
11.2.3 安装与配置ElasticSearch 287
11.2.4 实例59:使用ElasticSearch集群的HTTP接口创建索引 292
11.2.5 实例60:使用ElasticSearch集群的HTTP接口查看索引 293
11.2.6 实例61:使用ElasticSearch集群的HTTP接口添加数据 294
11.2.7 安装与配置Kibana 296
11.2.8 实例62:启动并验证Kibana系统 298
11.3 实例63:实现一个游戏日志实时分析系统 299
11.3.1 了解系统要实现的功能 300
11.3.2 了解平台体系架构 300
11.3.3 采集数据 302
11.3.4 分流数据 304
11.3.5 实现数据可视化 306
11.4 小结 308
第12章 Kafka与Spark实时计算引擎的整合 309
12.1 本章教学视频说明 309
12.2 介绍Spark背景 310
12.2.1 Spark SQL—— Spark处理结构化数据的模块 310
12.2.2 Spark Streaming—— Spark核心应用接口的一种扩展 311
12.2.3 MLlib——Spark的一个机器学习类库 311
12.2.4 GraphX—— Spark的一个图计算框架 311
12.3 准备Spark环境 311
12.3.1 下载Spark基础安装包 311
12.3.2 安装与配置Spark集群 312
12.4 操作Spark 315
12.4.1 实例64:使用Spark Shell统计单词出现的频率 315
12.4.2 实例65:使用Spark SQL对单词权重进行降序输出 317
12.4.3 实例66:使用Spark Submit统计单词出现的频率 319
12.5 实例67:对游戏明细数据做实时统计 322
12.5.1 了解项目背景和价值 323
12.5.2 设计项目实现架构 323
12.5.3 编码步骤一 实现数据采集 325
12.5.4 编码步骤二 实现流计算 327
12.5.5 编码步骤三 打包应用程序 330
12.5.6 编码步骤四 创建表结构 332
12.5.7 编码步骤五 执行应用程序 332
12.5.8 编码步骤六 预览结果 333
12.6 小结 333
第13章 实例68:从零开始设计一个Kafka监控系统——Kafka Eagle 334
13.1 本章教学视频说明 334
13.2 了解Kafka Eagle监控系统 335
13.2.1 设计的背景 335
13.2.2 应用场景 336
13.3 从结构上了解Kafka Eagle 337
13.3.1 了解Kafka Eagle的整体架构和代码结构 337
13.3.2 设计Kafka Eagle的7大功能模块 339
13.4 实现Kafka Eagle的功能模块 347
13.4.1 编码步骤一 实现数据面板 347
13.4.2 编码步骤二 实现主题管理 348
13.4.3 编码步骤三 实现消费者实例详情 350
13.4.4 编码步骤四 实现集群监控 350
13.4.5 编码步骤五 实现性能监控 351
13.4.6 编码步骤六 实现告警功能 351
13.4.7 编码步骤七 实现系统功能 352
13.5 安装及使用Kafka Eagle监控系统 353
13.5.1 准备环境 353
13.5.2 快速部署 354
13.5.3 了解Kafka Eagle的基础命令 358
13.6 小结 358