Spark Streaming实时流式大数据处理实战
作者:肖力涛编著
出版时间:2019年版
内容简介
本书以翔实的原理讲解和充实的实战代码剖析,全面阐述了Spark Streaming流式处理平台,便于读者能够从入门开始了解搭建Spark平台,在此基础上学习流式处理框架,并动手实践,进行Spark Streaming流式大数据处理,包括与主流平台框架,如Kafka、Redis和ZooKeeper的对接应用等,并介绍了项目实战中的一些开发和调优策略。读者能够通过本书快速搭建Spark平台,并根据自己面临的使用场景快速搭建处理平台,同时能够了解背后的原理,对调优、开发都能起到一定的指导作用。本书适合大数据处理人员,尤其是基于流式大数据处理的人员阅读,本书也可以作为大数据处理人员的常备工具书随时翻阅。
目录
前言
第1篇 Spark基础
第1章 初识Spark2
1.1 Spark由来3
1.2 流式处理与Spark Streaming5
1.2.1 流式处理框架5
1.2.2 Spark Streaming初识7
1.2.3 Structed Streaming简述8
1.3 本章小结8
第2章 Spark运行与开发环境9
2.1 Spark的下载与安装9
2.2 Spark运行模式10
2.2.1 本地模式13
2.2.2 本地集群模式13
2.2.3 Standalone模式14
2.2.4 Spark On Yarn模式15
2.2.5 Spark On Mesos模式15
2.3 搭建开发环境15
2.3.1 修改配置16
2.3.2 启动集群18
2.3.3 IDE配置20
2.3.4 UI监控界面24
2.4 实例——Spark文件词频统计28
2.5 本章小结35
第3章 Spark编程模型36
3.1 RDD概述36
3.2 RDD存储结构37
3.3 RDD操作38
3.3.1 Transformation操作38
3.3.2 Action操作41
3.4 RDD间的依赖方式42
3.4.1 窄依赖(Narrow Dependency)42
3.4.2 Shuffle依赖(宽依赖Wide Dependency)43
3.5 从RDD看集群调度45
3.6 RDD持久化(Cachinng/Persistence)46
3.7 共享变量47
3.7.1 累加器(Accumulator)48
3.7.2 广播变量(Broadcast Variables)50
3.8 实例——Spark RDD操作51
3.9 本章小结56
第2篇 Spark Streaming详解
第4章 Spark Streaming编程模型及原理58
4.1 DStream数据结构58
4.2 DStream操作59
4.2.1 DStream Transformation操作59
4.2.2 DStream输出操作63
4.3 Spark Streaming初始化及输入源63
4.3.1 初始化流式上下文(StreamingContext)63
4.3.2 输入源及接收器(Receivers)64
4.4 持久化、Checkpointing和共享变量65
4.4.1 DStream持久化(Caching/Persistence)65
4.4.2 Checkpointing操作66
4.5 实例——Spark Streaming流式词频统计69
4.6 本章小结73
第5章 Spark Streaming与Kafka75
5.1 ZooKeeper简介75
5.1.1 相关概念75
5.1.2 ZooKeeper部署77
5.2 Kafka简介79
5.2.1 相关术语80
5.2.2 Kafka运行机制81
5.2.3 Kafka部署83
5.2.4 简单样例85
5.3 Spark Streaming接收Kafka数据86
5.3.1 基于Receiver的方式87
5.3.2 直接读取的方式88
5.4 Spark Streaming向Kafka中写入数据90
5.5 实例——Spark Streaming分析Kafka数据92
5.6 本章小结101
第6章 Spark Streaming与外部存储介质102
6.1 将DStream输出到文件中102
6.2 使用foreachRDD设计模式105
6.3 将DStream输出到MySQL中106
6.3.1 MySQL概述107
6.3.2 MySQL通用连接类107
6.3.3 MySQL输出操作108
6.4 将DStream输出到HBase中109
6.4.1 HBase概述109
6.4.2 HBase通用连接类110
6.4.3 HBase输出操作111
6.4.4 “填坑”记录112
6.5 将DStream数据输出到Redis中112
6.5.1 Redis安装112
6.5.2 Redis概述113
6.5.3 Redis通用连接类113
6.5.4 输出Redis操作115
6.6 实例——日志分析115
6.7 本章小结122
第7章 Spark Streaming调优实践124
7.1 数据序列化124
7.2 广播大变量126
7.3 数据处理和接收时的并行度127
7.4 设置合理的批处理间隔128
7.5 内存优化128
7.5.1 内存管理129
7.5.2 优化策略130
7.5.3 垃圾回收(GC)优化131
7.5.4 Spark Streaming内存优化132
7.6 实例——项目实战中的调优示例133
7.6.1 合理的批处理时间(batchDuration)133
7.6.2 合理的Kafka拉取量(maxRatePerPartition参数设置)134
7.6.3 缓存反复使用的Dstream(RDD)135
7.6.4 其他一些优化策略135
7.6.5 结果136
7.7 本章小结138
第3篇 Spark Streaming案例实战
第8章 实时词频统计处理系统实战140
8.1 背景与设计140
8.2 代码实现142
8.2.1 数据生成器142
8.2.2 分词服务146
8.2.3 流式词频统计147
8.3 环境配置与运行158
8.3.1 相关服务启动158
8.3.2 查看结果160
8.4 本章小结163
第9章 用户行为统计实战164
9.1 背景与设计164
9.1.1 不同状态的保存方式164
9.1.2 State设计166
9.1.3 Redis存储167
9.2 代码实现167
9.2.1 数据生成器167
9.2.2 用户行为统计168
9.3 环境配置与运行172
9.3.1 相关服务启动172
9.3.2 查看结果173
9.4 本章小结175
第10章 监控报警系统实战177
10.1 背景与设计177
10.2 代码实现179
10.2.1 简易爬虫子项目179
10.2.2 流式处理子项目184
10.2.3 归纳统计子项目191
10.2.4 数据表情况199
10.3 环境配置与查看200
10.3.1 启动各个模块200
10.3.2 查看结果200
10.4 本章小结203
附录A Scala语言基础204
A.1 安装及环境配置204
A.1.1 安装Scala204
A.1.2 开发环境配置205
A.2 Scala语法独特性206
A.2.1 换行符207
A.2.2 统一类型207
A.2.3 Scala变量208
A.2.4 条件和循环语句209
A.2.5 函数和方法210
A.2.6 特质、单例和样例类213
A.3 Scala集合215
A.3.1 集合框架216
A.3.2 核心特质(Trait)219
A.3.3 常用的不可变集合类222
A.3.4 常用的可变集合类225
A.3.5 字符串227
A.3.6 数组228
A.3.7 迭代器(Ite