书籍详情

Spark性能优化实战

Spark性能优化实战

作者:谢雪葵

出版社:清华大学出版社

出版时间:2023-11-01

ISBN:9787302647706

定价:¥99.80

购买这本书可以去
内容简介
  《Spark性能优化实战:突破性能瓶颈,遨游数据重洋》全面、系统、深入地介绍Apache Spark性能优化的相关技术和策略,涵盖从Spark性能优化的基础知识到核心技术,再到应用实践的方方面面。本书不但系统地介绍各种监控工具的使用,而且还结合实战案例,详细介绍Spark性能优化的各种经验和技巧,提升读者的实际应用技能。 《Spark性能优化实战:突破性能瓶颈,遨游数据重洋》共8章。第1章从性能优化的基本概念出发,介绍Spark的基础知识,并介绍如何进行性能优化;第2章介绍Spark性能优化的几个方面,包括程序设计优化、资源优化、网络通信优化和数据读写优化等;第3章深入介绍Spark任务执行过程优化;第4章介绍Spark SQL性能优化;第5章结合实战案例全面解析Spark性能优化的核心技术与应用;第6章详细介绍不同应用场景的性能优化策略;第7章介绍Spark集成Hadoop、Kafka和Elasticsearch使用时的性能优化,从而提供更实用的Spark性能提升方案;第8章介绍Spark应用程序开发与优化,以及集群管理实践。 《Spark性能优化实战:突破性能瓶颈,遨游数据重洋》内容丰富,讲解深入浅出,适合Apache Spark开发人员、数据工程师和数据科学家阅读,也适合需要处理大规模数据集和对Spark性能优化感兴趣的技术人员阅读,还可作为高等院校大数据专业的教材和相关培训机构的教学用书。
作者简介
  谢雪葵: 资深研发工程师,CCF会员,阿诚网络创始人。有多年的软件设计和开发经验,专注于大数据技术与服务。近年来主持和参与多个大型银行和互联网公司的大数据项目,累积了丰富的大数据项目开发及性能优化经验。为多家企业提供技术支持,帮助其降低成本和提高效率。
目录
 
第1章  性能优化基础 1
1.1  Spark简介 1
1.2  什么是Spark性能优化 1
1.3  Spark应用程序性能指标 2
1.4  自带的Spark Web UI 5
1.4.1  Jobs模块 6
1.4.2  Stages模块 12
1.4.3  Storage模块 16
1.4.4  Environment模块 17
1.4.5  Executors模块 18
1.4.6  SQL模块 19
1.5  自带的Spark历史服务器 21
1.5.1  Spark历史服务器简介 21
1.5.2  配置、启动和访问Spark
历史服务器 22
1.6  Spark事件日志 23
1.6.1  Spark的常见事件 23
1.6.2  事件信息 24
1.6.3  Spark启动事件分析案例 24
1.6.4  Spark事件日志的用途 25
1.6.5  CPU密集型与内存密集型
分析案例 26
1.7  Spark驱动程序日志 27
1.8  Spark Executor日志 28
1.8.1  Spark Executor日志简介 28
1.8.2  日志解析 28
1.8.3  配置Executor打印日志到
Driver节点 29
1.8.4  使用Executor完成时间异常
分析案例 30
1.9  Linux系统监控工具 31
1.9.1  top命令 31
1.9.2  htop命令 32
1.9.3  iostat命令 32
1.9.4  vmstat命令 34
1.9.5  sar命令 35
1.9.6  Spark进程的CPU和内存
监控案例 35
1.10  JVM监控工具 36
1.10.1  JConsole监控工具 37
1.10.2  JVisualVM监控工具 38
1.10.3  使用JVisualVM定位内存
泄漏案例 41
1.11  第三方工具Prometheus 42
1.11.1  Prometheus简介 42
1.11.2  Prometheus架构的
工作原理 42
1.11.3  安装Prometheus 43
1.11.4  使用Prometheus Web UI 46
1.11.5  基于PromQL磁盘的多维度
分析案例 47
1.12  第三方工具Grafana 48
1.12.1  Grafana简介 48
1.12.2  安装Grafana 48
1.12.3  数据源和仪表盘 49
1.12.4  在Grafana中创建查询和
可视化 52
1.12.5  监控分析Spark指标案例 55
1.13  Spark性能测试与验证 56
1.13.1  性能测试之基准测试 56
1.13.2  性能测试之压力测试 57
1.13.3  性能测试之资源测试 59
1.13.4  性能测试之基准优化测试 61
1.13.5  获取测试数据 62
1.13.6  使用Spark MLlib生成电商网站
测试数据案例 64
1.13.7  性能测试工具SparkPerf 65
1.13.8  性能测试工具HiBench 68
1.13.9  ScalaCheck检查属性案例 70
1.13.10  准确性验证之单元测试 71
1.13.11  准确性验证之集成测试 73
1.13.12  准确性验证之作业验证 75
1.14  Spark执行计划 77
1.14.1  Spark执行计划简介 77
1.14.2  Spark执行计划的生成
过程 78
1.14.3  执行计划中的逻辑计划 80
1.14.4  执行计划中的物理计划 84
1.14.5  Spark钨丝计划Tungsten 89
1.14.6  Spark阶段划分和
任务划分 90
1.14.7  Spark执行计划的优化和
调试 91
1.14.8  Spark执行计划的可视化 92
1.14.9  Shuffle性能瓶颈识别案例 93
1.15  Spark任务性能瓶颈的定位 94
1.15.1  性能瓶颈的定义和识别性能
瓶颈的意义 95
1.15.2  数据倾斜引发的性能问题 96
1.15.3  数据本地性问题 98
1.15.4  网络瓶颈问题 100
1.15.5  内存管理问题 102
1.15.6  垃圾回收问题 104
1.15.7  Spark长时任务性能瓶颈
定位案例 105
第2章  Spark应用程序性能优化 107
2.1  程序设计优化 107
2.1.1  数据模型策略优化 107
2.1.2  缓存策略优化 108
2.1.3  广播变量策略优化 109
2.1.4  累加器策略优化 111
2.1.5  函数式编程策略优化 113
2.1.6  全局变量策略优化 115
2.1.7  程序设计优化综合案例 116
2.2  资源优化 118
2.2.1  Spark资源管理的重要性 118
2.2.2  Spark内存管理的
优化技巧 119
2.2.3  Spark中的CPU优化技巧 123
2.2.4  Spark磁盘管理的
优化技巧 125
2.2.5  Spark Shuffle分配的
优化技巧 125
2.2.6  Spark并行度与资源分配的
平衡 127
2.2.7  Spark分区策略优化 129
2.2.8  Spark内存溢出的
应对策略 130
2.2.9  Spark Shuffle分配优化
案例 131
2.3  网络通信优化 133
2.3.1  网络通信架构和组件 133
2.3.2  网络通信协议和数据
传输方式 134
2.3.3  数据压缩策略 135
2.3.4  序列化策略 137
2.3.5  网络缓存策略 139
2.3.6  I/O优化策略 140
2.3.7  带宽限制和网络拥塞控制 141
2.3.8  数据本地性优化策略 142
2.3.9  网络安全和认证优化 143
2.3.10  进程本地化优化案例 144
2.4  数据读写优化 147
2.4.1  数据读取的优化技巧 147
2.4.2  数据写入的优化技巧 147
2.4.3  过滤数据的读取优化 148
2.4.4  分区读取数据的优化 149
2.4.5  批量写入数据的优化 150
2.4.6  并行写入数据的优化 152
2.4.7  列存储数据的读取优化 153
2.4.8  数据预处理优化技巧 154
2.4.9  数据存储位置优化技巧 154
2.4.10  内存和磁盘数据缓存
优化技巧 155
2.4.11  数据格式优化技巧 156
2.4.12  转换方式优化技巧 157
2.4.13  索引数据读取优化技巧 159
2.4.14  数据读写错误的处理和
容错技巧 160
2.4.15  Alluxio的使用 162
2.4.16  利用压缩数据减少传输量
案例 166
第3章  Spark任务执行过程优化 169
3.1  调度优化 169
3.1.1  资源管理器的基本原理 169
3.1.2  理解Spark资源管理器 171
3.1.3  资源分配策略 174
3.1.4  资源调度算法 176
3.1.5  集群资源池化技术 180
3.1.6  Docker容器 182
3.1.7  基于YARN的资源管理 184
3.1.8  基于Mesos的资源管理 188
3.1.9  基于Kubernetes的资源
管理 190
3.1.10  Spark资源利用率和性能
优化案例 204
3.2  任务执行器优化 206
3.2.1  Spark任务执行器组件简介 206
3.2.2  Spark任务执行器的线程池
配置优化 210
3.2.3  Spark任务执行器的JVM参数
配置优化 211
3.2.4  Spark任务执行器的堆内存
配置优化 213
3.2.5  Spark任务执行器的直接内存
配置优化 215
3.2.6  Spark任务执行器的内存分配
方式优化 216
3.2.7  Spark任务执行器的GC策略
配置优化 218
3.2.8  Spark任务执行器的资源隔离
配置优化 219
3.2.9  Spark任务执行器的容错机制
优化 220
3.2.10  Spark任务线程池的并行度
提升和吞吐量增强案例 221
第4章  Spark SQL性能优化 223
4.1  常用的查询优化 223
4.1.1  谓词下推 223
4.1.2  窄依赖 224
4.1.3  聚合查询优化 224
4.1.4  Join查询优化 226
4.1.5  子查询优化 227
4.1.6  联合查询优化 228
4.1.7  窗口函数优化 229
4.1.8  排序查询优化 232
4.1.9  内置函数优化 232
4.1.10  Union连接优化 233
4.1.11  表设计优化 233
4.1.12  使用窗口函数实现高效的
分组统计案例 234
4.2  Spark 3.0的新特性 236
4.2.1  AQE的自动分区合并 236
4.2.2  AQE的自动倾斜处理 238
4.2.3  AQE的Join策略调整 239
4.2.4  DPP动态分区剪裁 240
4.2.5  Join Hints的使用技巧 241
4.2.6  使用Join Hints解决数据倾斜
案例 244
4.3  Spark SQL数据倾斜优化 245
4.3.1  广播变量 245
4.3.2  采样 246
4.3.3  手动指定Shuffle分区数 248
4.3.4  随机前缀和哈希 249
4.3.5  使用Map Join方法 251
4.3.6  预先聚合 253
4.3.7  排序 255
4.3.8  动态重分区 257
4.3.9  手动实现动态重分区案例 258
4.4  特定场景优化 259
4.4.1  大表连接小表 259
4.4.2  大表连接大表 262
4.4.3  窗口函数优化 265
4.4.4  复杂逻辑和函数调用优化 268
4.4.5  多表关联查询优化 270
4.4.6  宽表查询优化 272
4.4.7  使用两阶段Shuffle解决倾斜
大表关联案例 272
第5章  Spark性能优化
案例分析 281
5.1  基于Spark的短视频推荐系统
性能优化 281
5.1.1  短视频推荐系统概述 281
5.1.2  将Spark作为短视频推荐系统的
计算框架 285
5.1.3  客户端Push业务 287
5.1.4  Model_Server大宽表 288
5.1.5  推荐请求表ETL的优化 289
5.1.6  Model_Server大宽表的
优化 294
5.1.7  案例总结 296
5.2  基于Spark的航空数据分析系统性能
优化 297
5.2.1  系统概述 297
5.2.2  性能评估与瓶颈分析 299
5.2.3  数据分区与存储优化 300
5.2.4  任务调度与资源管理 301
5.2.5  数据预处理与转换优化 302
5.2.6  查询优化与性能优化 304
5.2.7  并行计算与调度优化 305
5.2.8  监控与优化策略 306
第6章  不同场景的Spark性能
优化 309
6.1  批处理模式的优化策略 309
6.1.1  数据倾斜优化之预聚合 309
6.1.2  数据倾斜优化之键值对
重分区 313
6.1.3  数据倾斜优化之调整分区
数量 314
6.1.4  数据倾斜优化之广播变量 316
6.1.5  数据倾斜优化之动态调整分区
大小 317
6.1.6  数据倾斜优化之使用Map Join
方法 318
6.1.7  数据倾斜优化之随机前缀和
扩容RDD 319
6.1.8  数据倾斜优化之采样倾斜
key 320
6.1.9  数据倾斜优化之过滤特定
数据 322
6.1.10  数据倾斜优化之组合策略 323
6.1.11  基于内存的Shuffle操作
优化 324
6.1.12  基于Sort的Shuffle操作
优化 325
6.1.13  基于压缩和序列化的Shuffle
操作优化 326
6.1.14  基于增量式的Shuffle
操作优化 326
6.2  流式处理场景的优化策略 327
6.2.1  批处理间隔优化 327
6.2.2  状态管理优化 328
6.2.3  窗口操作优化 329
6.3  机器学习场景的优化策略 330
6.3.1  模型训练优化 330
6.3.2  特征工程优化 331
第7章  Spark集成其他技术的
性能优化 333
7.1  Spark与Hadoop整合优化 333
7.1.1  数据读写优化 333
7.1.2  数据存储优化 334
7.2  Spark与Kafka整合优化 336
7.2.1  数据读写优化 336
7.2.2  数据处理优化 337
7.3  Spark与Elasticsearch的整合优化 339
7.3.1  数据写入和索引优化 340
7.3.2  数据查询和性能优化 341
第8章  Spark性能优化实践 344
8.1  Spark应用程序开发建议 344
8.1.1  代码规范 344
8.1.2  数据分析 346
8.1.3  数据处理 348
8.2  Spark应用程序优化建议 349
8.2.1  数据压缩 349
8.2.2  合理使用缓存 350
8.2.3  Shuffle操作 351
8.3  Spark集群管理的优化建议 352
8.3.1  资源管理 352
8.3.2  任务调度 353
8.3.3  故障处理 354
结束语 356
Spark性能优化实战:突破性能瓶颈,遨游数据重洋
  
目录
  
·VIII·
  
  
·IX·
  
  
  
  
  
猜您喜欢

读书导航