新書推薦:
《
为你想要的生活
》
售價:HK$
66.1
《
关键改变:如何实现自我蜕变
》
售價:HK$
77.3
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:HK$
99.7
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:HK$
62.7
《
不在场证明谜案(超绝CP陷入冤案!日本文坛超新星推理作家——辻堂梦代表作首次引进!)
》
售價:HK$
58.2
《
明式家具三十年经眼录
》
售價:HK$
524.2
《
敦煌写本文献学(增订本)
》
售價:HK$
221.8
《
耕读史
》
售價:HK$
109.8
|
編輯推薦: |
全面、深入地总结资深工程师多年大数据项目实战经验
理论结合实践,由浅入深地展现Spark性能优化的核心技术
内容全面:涵盖Spark性能优化的基础知识、核心技术和应用实践,对Spark性能优化进行全面、系统的探讨。
实用性强:不但介绍理论知识,而且结合350多个示例和多个实战案例解析Spark性能优化的核心技术与应用,帮助读者更好地实施优化策略。
适用面广:无论是Spark性能优化初学者,还是开发人员、数据工程师和数据科学家等从业人员,都可以从本书中获得需要的知识和技能。
前瞻性强:基于Spark的新版本写作,不但介绍其新特性,而且介绍其集成Hadoop、Kafka和Elasticsearch使用时的性能优化方法。
讲解深入:对Spark性能优化的核心技术与工作原理进行深入讲解,以便让读者能够理解Spark的内部结构和运行机制,从而更有效地对其性能进行优化。
|
內容簡介: |
《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·
|
內容試閱:
|
随着大数据处理需求的日益增长,Apache Spark在大数据处理领域中的地位也在不断提升。Apache Spark因其高效的分布式计算能力、对大规模数据的处理能力和对各种数据处理任务(如批处理、流处理和机器学习等)的广泛支持而得到了广泛使用。
为了进一步挖掘和利用Spark的潜力,对其进行性能优化是至关重要的。对Spark进行性能优化,不但可以大大提高应用程序的运行效率,提高系统的稳定性和可靠性,而且还可以减少资源的使用,从而降低运行成本。
虽然Spark社区提供了许多性能优化的建议和技巧,但是对于许多开发人员和数据工程师而言,如何在实际项目中应用这些建议和技巧,尤其是如何根据特定的应用场景和需求进行性能优化,依然是一大挑战。
基于此背景,笔者编写了本书。本书旨在全面、系统、深入地介绍Spark性能优化的核心技术,并结合实战案例,帮助读者理解并掌握Spark性能优化的各种技术和策略,从而更好地应对实际项目中性能优化的需求。
本书特色
* 内容全面:全面涵盖从Spark性能优化的基础知识到核心技术,再到应用实践的方方面面,对Spark性能优化进行全面、系统的探讨。
* 实用性强:不但介绍理论知识,而且结合实战案例全面解析Spark性能优化的核心技术与应用,帮助读者提高实际动手能力,从而在实际工作中能更好地实施优化策略。
* 适用面广:无论是初学Spark性能优化的人员,还是Spark开发人员、数据工程师和数据科学家等,都可以从本书中获得需要的知识和技能。
* 前瞻性强:基于Spark的新版本写作,不但介绍其新特性,而且介绍其集成Hadoop、Kafka和Elasticsearch使用时的性能优化方法,便于读者了解新技术的发展趋势。
* 讲解深入:对Spark性能优化的核心技术与工作原理进行深入讲解,以便让读者能够理解Spark的内部结构和运行机制,从而更有效地对其性能进行优化。
本书内容
第1章性能优化基础,详细介绍Spark的基本概念、性能优化的意义,以及如何使用各
种工具监控和优化Spark的性能。
第2章Spark应用程序性能优化,详细介绍Spark性能优化的几个方面,包括程序设计优化、资源优化、网络通信优化和数据读写优化等。
第3章Spark任务执行过程优化,详细介绍如何对Spark的任务调度和执行过程进行优化,以提高任务执行的效率。
第4章Spark SQL性能优化,详细介绍如何针对Spark SQL进行性能优化,包括常用的查询优化、Spark 3.0的新特性、数据倾斜优化和特定场景优化。
第5章Spark性能优化案例分析,通过短视频推荐系统和航空数据分析系统的性能优化两个应用案例,详细介绍如何在实际项目中对Spark进行性能优化。
第6章不同场景的Spark性能优化,详细介绍基于批处理、流式处理和机器学习场景的Spark性能优化策略。
第7章Spark集成其他技术的性能优化,详细介绍Spark与Hadoop、Kafka和Elasticsearch整合使用时的性能优化方法,从而提供更实用的Spark性能提升方案。
第8章Spark性能优化实践,详细介绍Spark应用程序开发和优化,以及Spark集群管理方面的实践,从而提高读者的实际动手能力。
读者对象
* Spark开发人员;
* 数据工程师和科学家;
* 大数据架构师;
* 对Spark性能优化感兴趣的人员;
* 高等院校的学生;
* 相关培训机构的学员。
配书资料获取
本书涉及的源代码需要读者自行下载。请在清华大学出版社网站(www.tup.com.cn)上搜索到本书,然后在本书页面上找到“资源下载”模块,单击“网络资源”按钮即可进行下载;也可关注微信公众号“方大卓越”,回复“8”,即可获取下载链接。
致谢
感谢在本书写作期间提供帮助的解莹和刘博老师!感谢清华大学出版社参与本书出版的所有人员!没有你们的精益求精,就没有本书的高质量出版!
售后支持
由于笔者水平所限,加之写作时间仓促,书中可能会有一些疏漏和不足之处,敬请读者批评与指正。阅读本书时若有疑问,请发送电子邮件到bookservice2008@163.com,会有人定期解答。
谢雪葵
2023年10月
Spark性能优化实战:突破性能瓶颈,遨游数据重洋
前言
·II·
·III·
|
|