通过68个实例进行讲解
155分教学视频,与图书同步
免费提供实例素材、源文件
开发一个完整的监控系统,代码提供
短段+短句,便于流畅阅读
实例的商业性、应用性较强
代码均有详细注释,便于理解
《Kafka并不难学!入门、进阶、商业实战》基于Kafka 0.10.2.0以上版本,采用“理论+实践”的形式编写。全书共68个实例。
《Kafka并不难学!入门、进阶、商业实战》共分为4篇:第1篇,介绍了消息队列和Kafka、安装与配置Kafka环境;第2篇,介绍了Kafka的基础操作、生产者和消费者、存储及管理数据;第3篇,介绍了更高级的Kafka知识及应用,包括安全机制、连接器、流处理、监控与测试;第4篇,是对前面知识的综合及实际应用,包括ELK套件整合实战、Spark实时计算引擎整合实战、Kafka Eagle监控系统设计与实现实战。
《Kafka并不难学!入门、进阶、商业实战》的每章都配有同步教学视频(共计155分钟)。视频和图书具有相同的结构,能帮助读者快速而全面地了解每章的内容。本书还免费提供所有案例的源代码。这些代码不仅能方便读者学习,也能为以后的工作提供便利。
《Kafka并不难学!入门、进阶、商业实战》结构清晰、案例丰富、通俗易懂、实用性强。特别适合Kafka系统的初学者和进阶读者作为自学教程。另外,本书也适合社会培训学校作为培训教材,还适合大中专院校的相关专业作为教学参考书。
第1篇 准备
第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篇 入门
第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篇 进阶
第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.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篇 商业实战
第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
笔者以其多年的工作实践经验,详细介绍了Kafka从入门到落地应用的全过程,可以帮助读者快速上手!
——DataFun社区
Kafka几乎成为大数据解决方案的标配组件,在大型推荐系统、搜索等场景中有着广泛的使用。
本书从入门开始介绍,提供了大量的实际操作实例,深入浅出,最后还提供了一些实际项目级实例。本书可以帮助读者快速、深入地掌握Kafka,适合Kafka的入门者学习,也适合一线开发者参考。
——过往记忆
自2012年正式成为Apache项目基金会的项目之一,Kafka得到了迅速的发展,其在大数据技术栈体系结构中占有重要的地位。
本书从入门开始,分别介绍了Kafka的各大主要功能。最近一两年,Kafka转向了“流”方向,本书也介绍了Streaming(流)的相关知识,Streaming与HBase整合将是一大趋势。
不管是初学者还是有一定经验的工程师,都可以从这本书收益。
——中国HBase技术社区