内容简介 · · · · · ·
《Hive性能调优实战》旨在介绍如何进行Hive性能调优,以及调优时所涉及的工具。书中重点介绍了Hive性能调优所涉及的Hadoop组件和Hive工具。考虑到很多调优方法的着眼点有一定的相似性,这些调优方法可以适用于多个Hive版本,所以《Hive性能调优实战》在介绍Hive的相关内容时会穿插Hive 1.x、Hive 2.x及Hive 3.x等多个版本的内容。
目录 · · · · · ·
前言
章 举例感受Hive性能调优的多样性 1
1.1 感受改写SQL对性能的影响 1
1.1.1 数据准备 1
1.1.2 union案例 4
1.1.3 改写SQL实现union的优化 5
· · · · · · (更多)
章 举例感受Hive性能调优的多样性 1
1.1 感受改写SQL对性能的影响 1
1.1.1 数据准备 1
1.1.2 union案例 4
1.1.3 改写SQL实现union的优化 5
· · · · · · (更多)
前言
章 举例感受Hive性能调优的多样性 1
1.1 感受改写SQL对性能的影响 1
1.1.1 数据准备 1
1.1.2 union案例 4
1.1.3 改写SQL实现union的优化 5
1.1.4 失败的union调优 8
1.2 感受调整数据块大小对性能的影响 10
1.2.1 数据准备 11
1.2.2 案例比较 11
1.3 感受不同数据格式对性能的提升 15
1.3.1 数据准备 15
1.3.2 案例比较 16
1.4 感受不同的表设计对性能的影响 18
1.4.1 数据准备 19
1.4.2 案例比较 21
1.5 调优其实不难 24
第2章 Hive问题排查与调优思路 25
2.1 小白推演Hive的优化方法 25
2.1.1 类比关系型数据库的调优 25
2.1.2 学习大数据分布式计算的基本原理 28
2.1.3 学习使用YARN提供的日志 31
2.1.4 干预SQL的运行方式 33
2.2 老工对Hive的调优理解 36
2.2.1 从一个过度优化案例说起 36
2.2.2 编码和调优的原则 43
2.2.3 Hive程序相关规范 49
2.3 总结调优的一般性过程 51
第3章 环境搭建 53
3.1 Docker基础 53
3.1.1 Docker介绍 54
3.1.2 安装Docker 56
3.1.3 常见的Docker使用与管理命令 58
3.1.4 使用Dockerfile构建服务镜像 60
3.1.5 Dockerfile语法 63
3.2 Cloudera Docker搭建伪分布式环境 66
3.3 Docker搭建分布式集群 68
3.3.1 构建JDK镜像 69
3.3.2 构建Hadoop镜像 70
3.3.3 构建Hive镜像 72
3.3.4 启动集群 73
3.4 CDM搭建分布式集群 75
3.4.1 Cloudera Manager组件 75
3.4.2 Docker构建软件安装内部源 76
3.4.3 CDM安装分布式集群 79
3.5 使用GitHub开源项目构建集群 87
第4章 Hive及其相关大数据组件 89
4.1 Hive架构 89
4.1.1 Hive 1.x版本基本结构 89
4.1.2 Hive元数据 91
4.2 YARN组件 97
4.2.1 YARN的优点 97
4.2.2 YARN基本组成 97
4.2.3 YARN工作流程 99
4.2.4 YARN资源调度器 100
4.3 HDFS架构 102
4.3.1 常见HDFS优化 102
4.3.2 HDFS基本架构和读写流程 103
4.3.3 HDFS高可用架构 105
4.3.4 NameNode联盟 107
4.4 计算引擎 109
4.4.1 MapReduce计算引擎 109
4.4.2 Tez计算引擎 111
4.4.3 LLAP长时在线与处理程序 113
4.4.4 Spark计算引擎 115
第5章 深入MapReduce计算引擎 117
5.1 MapReduce整体处理过程 117
5.2 MapReduce作业输入 118
5.2.1 输入格式类InputFormat 118
5.2.2 InputFormat在Hive中的使用 120
5.3 MapReduce的Mapper 121
5.3.1 Mapper类 121
5.3.2 Hive中与Mapper相关的配置 123
5.4 MapReduce的Reducer 125
5.4.1 Reducer类 126
5.4.2 Hive中与Reducer相关的配置 127
5.5 MapReduce的Shuffle 128
5.6 MapReduce的Map端聚合 129
5.6.1 Combiner类 129
5.6.2 Map端的聚合与Hive配置 130
5.7 MapReduce作业输出 131
5.7.1 OutputFormat作业输出 132
5.7.2 Hive配置与作业输出 133
5.8 MapReduce作业与Hive配置 134
5.9 MapReduce与Tez对比 135
5.9.1 通过案例代码对比MapReduce和Tez 135
5.9.2 Hive中Tez和LLAP相关的配置 141
第6章 HiveSQL执行计划 143
6.1 查看SQL的执行计划 143
6.1.1 查看执行计划的基本信息 144
6.1.2 查看执行计划的扩展信息 148
6.1.3 查看SQL数据输入依赖的信息 148
6.1.4 查看SQL操作涉及的相关权限信息 152
6.1.5 查看SQL的向量化描述信息 152
6.2 简单SQL的执行计划解读 158
6.3 带普通函数/操作符SQL的执行计划解读 161
6.3.1 执行计划解读 161
6.3.2 普通函数和操作符 162
6.4 带聚合函数的SQL执行计划解读 164
6.4.1 在Reduce阶段聚合的SQL 164
6.4.2 在Map和Reduce阶段聚合的SQL 167
6.4.3 不错分组聚合 169
6.5 带窗口/分析函数的SQL执行计划解读 172
6.6 表连接的SQL执行计划解读 175
6.6.1 Hive表连接的类型 175
6.6.2 内连接和外连接 176
6.6.3 左半连接 178
第7章 Hive数据处理模式 181
7.1 过滤模式 181
7.1.1 where子句过滤模式 182
7.1.2 having子句过滤 183
7.1.3 distinct子句过滤 184
7.1.4 表过滤 186
7.1.5 分区过滤 188
7.1.6 分桶过滤 189
7.1.7 索引过滤 191
7.1.8 列过滤 191
7.2 聚合模式 192
7.2.1 distinct模式 193
7.2.2 count(列)、count(*)、count(1)行计数聚合模式 194
7.2.3 可计算中间结果的聚合模式 197
7.2.4 不可计算中间结果的聚合模式 199
7.3 连接模式 200
7.3.1 普通Map连接 201
7.3.2 桶的Map连接和排序合并桶的Map连接 207
7.3.3 倾斜连接 209
7.3.4 表连接与基于成本的优化器 210
第8章 YARN日志 212
8.1 查看YARN日志的方式 212
8.1.1 ResourceManager Web UI界面 212
8.1.2 JobHistory Web UI界面 215
8.2 快速查看集群概况 216
8.2.1 Cluster Metrics集群度量指标 217
8.2.2 Cluster Node Metrics集群节点的度量信息 218
8.2.3 Cluster Overview集群概况 220
8.3 查看集群节点概况 221
8.3.1 节点列表概况 221
8.3.2 节点详细信息 223
8.3.3 节点作业信息 224
8.4 查看集群的队列调度情况 226
8.5 查看集群作业运行信息 230
8.5.1 集群作业运行状态 230
8.5.2 查看作业运行的基本信息 231
8.5.3 查看作业计数器 232
第9章 数据存储 236
9.1 文件存储格式之Apache ORC 236
9.1.1 ORC的结构 237
9.1.2 ORC的数据类型 238
9.1.3 ACID事务的支持 240
9.2 与ORC相关的Hive配置 241
9.2.1 表配置属性 241
9.2.2 Hive表的配置属性 241
9.3 文件存储格式之Apache Parquet 242
9.3.1 Parquet基本结构 243
9.3.2 Parquet的相关配置 245
9.4 数据归档 245
0章 发现并优化Hive中的性能问题 247
10.1 监控Hive数据库的状态 247
10.2 监控当前集群状态 253
10.3 定位性能瓶颈 258
10.3.1 使用HS2 WebUI排除非大数据组件的问题 258
10.3.2 排查长时等待调度 260
10.3.3 Map任务读取小文件和大文件 261
10.3.4 Reduce的数据倾斜 262
10.3.5 缓慢的Shuffle 264
10.3.6 集群资源的限制 265
10.4 数据倾斜 266
10.4.1 不可拆分大文件引发的数据倾斜 266
10.4.2 业务无关的数据引发的数据倾斜 267
10.4.3 多维聚合计算数据膨胀引起的数据倾斜 268
10.4.4 无法削减中间结果的数据量引发的数据倾斜 268
10.4.5 两个Hive数据表连接时引发的数据倾斜 269
1章 Hive知识体系总结 270
11.1 Hive知识体系 270
11.2 数据粒度 271
11.3 SQL相关 275
11.3.1 select查询语句 276
11.3.2 数据定义语言(DDL) 276
11.3.3 数据控制语言(DML) 279
11.3.4 用户自定义函数(UDF) 280
11.4 文件操作 281
· · · · · · (收起)
章 举例感受Hive性能调优的多样性 1
1.1 感受改写SQL对性能的影响 1
1.1.1 数据准备 1
1.1.2 union案例 4
1.1.3 改写SQL实现union的优化 5
1.1.4 失败的union调优 8
1.2 感受调整数据块大小对性能的影响 10
1.2.1 数据准备 11
1.2.2 案例比较 11
1.3 感受不同数据格式对性能的提升 15
1.3.1 数据准备 15
1.3.2 案例比较 16
1.4 感受不同的表设计对性能的影响 18
1.4.1 数据准备 19
1.4.2 案例比较 21
1.5 调优其实不难 24
第2章 Hive问题排查与调优思路 25
2.1 小白推演Hive的优化方法 25
2.1.1 类比关系型数据库的调优 25
2.1.2 学习大数据分布式计算的基本原理 28
2.1.3 学习使用YARN提供的日志 31
2.1.4 干预SQL的运行方式 33
2.2 老工对Hive的调优理解 36
2.2.1 从一个过度优化案例说起 36
2.2.2 编码和调优的原则 43
2.2.3 Hive程序相关规范 49
2.3 总结调优的一般性过程 51
第3章 环境搭建 53
3.1 Docker基础 53
3.1.1 Docker介绍 54
3.1.2 安装Docker 56
3.1.3 常见的Docker使用与管理命令 58
3.1.4 使用Dockerfile构建服务镜像 60
3.1.5 Dockerfile语法 63
3.2 Cloudera Docker搭建伪分布式环境 66
3.3 Docker搭建分布式集群 68
3.3.1 构建JDK镜像 69
3.3.2 构建Hadoop镜像 70
3.3.3 构建Hive镜像 72
3.3.4 启动集群 73
3.4 CDM搭建分布式集群 75
3.4.1 Cloudera Manager组件 75
3.4.2 Docker构建软件安装内部源 76
3.4.3 CDM安装分布式集群 79
3.5 使用GitHub开源项目构建集群 87
第4章 Hive及其相关大数据组件 89
4.1 Hive架构 89
4.1.1 Hive 1.x版本基本结构 89
4.1.2 Hive元数据 91
4.2 YARN组件 97
4.2.1 YARN的优点 97
4.2.2 YARN基本组成 97
4.2.3 YARN工作流程 99
4.2.4 YARN资源调度器 100
4.3 HDFS架构 102
4.3.1 常见HDFS优化 102
4.3.2 HDFS基本架构和读写流程 103
4.3.3 HDFS高可用架构 105
4.3.4 NameNode联盟 107
4.4 计算引擎 109
4.4.1 MapReduce计算引擎 109
4.4.2 Tez计算引擎 111
4.4.3 LLAP长时在线与处理程序 113
4.4.4 Spark计算引擎 115
第5章 深入MapReduce计算引擎 117
5.1 MapReduce整体处理过程 117
5.2 MapReduce作业输入 118
5.2.1 输入格式类InputFormat 118
5.2.2 InputFormat在Hive中的使用 120
5.3 MapReduce的Mapper 121
5.3.1 Mapper类 121
5.3.2 Hive中与Mapper相关的配置 123
5.4 MapReduce的Reducer 125
5.4.1 Reducer类 126
5.4.2 Hive中与Reducer相关的配置 127
5.5 MapReduce的Shuffle 128
5.6 MapReduce的Map端聚合 129
5.6.1 Combiner类 129
5.6.2 Map端的聚合与Hive配置 130
5.7 MapReduce作业输出 131
5.7.1 OutputFormat作业输出 132
5.7.2 Hive配置与作业输出 133
5.8 MapReduce作业与Hive配置 134
5.9 MapReduce与Tez对比 135
5.9.1 通过案例代码对比MapReduce和Tez 135
5.9.2 Hive中Tez和LLAP相关的配置 141
第6章 HiveSQL执行计划 143
6.1 查看SQL的执行计划 143
6.1.1 查看执行计划的基本信息 144
6.1.2 查看执行计划的扩展信息 148
6.1.3 查看SQL数据输入依赖的信息 148
6.1.4 查看SQL操作涉及的相关权限信息 152
6.1.5 查看SQL的向量化描述信息 152
6.2 简单SQL的执行计划解读 158
6.3 带普通函数/操作符SQL的执行计划解读 161
6.3.1 执行计划解读 161
6.3.2 普通函数和操作符 162
6.4 带聚合函数的SQL执行计划解读 164
6.4.1 在Reduce阶段聚合的SQL 164
6.4.2 在Map和Reduce阶段聚合的SQL 167
6.4.3 不错分组聚合 169
6.5 带窗口/分析函数的SQL执行计划解读 172
6.6 表连接的SQL执行计划解读 175
6.6.1 Hive表连接的类型 175
6.6.2 内连接和外连接 176
6.6.3 左半连接 178
第7章 Hive数据处理模式 181
7.1 过滤模式 181
7.1.1 where子句过滤模式 182
7.1.2 having子句过滤 183
7.1.3 distinct子句过滤 184
7.1.4 表过滤 186
7.1.5 分区过滤 188
7.1.6 分桶过滤 189
7.1.7 索引过滤 191
7.1.8 列过滤 191
7.2 聚合模式 192
7.2.1 distinct模式 193
7.2.2 count(列)、count(*)、count(1)行计数聚合模式 194
7.2.3 可计算中间结果的聚合模式 197
7.2.4 不可计算中间结果的聚合模式 199
7.3 连接模式 200
7.3.1 普通Map连接 201
7.3.2 桶的Map连接和排序合并桶的Map连接 207
7.3.3 倾斜连接 209
7.3.4 表连接与基于成本的优化器 210
第8章 YARN日志 212
8.1 查看YARN日志的方式 212
8.1.1 ResourceManager Web UI界面 212
8.1.2 JobHistory Web UI界面 215
8.2 快速查看集群概况 216
8.2.1 Cluster Metrics集群度量指标 217
8.2.2 Cluster Node Metrics集群节点的度量信息 218
8.2.3 Cluster Overview集群概况 220
8.3 查看集群节点概况 221
8.3.1 节点列表概况 221
8.3.2 节点详细信息 223
8.3.3 节点作业信息 224
8.4 查看集群的队列调度情况 226
8.5 查看集群作业运行信息 230
8.5.1 集群作业运行状态 230
8.5.2 查看作业运行的基本信息 231
8.5.3 查看作业计数器 232
第9章 数据存储 236
9.1 文件存储格式之Apache ORC 236
9.1.1 ORC的结构 237
9.1.2 ORC的数据类型 238
9.1.3 ACID事务的支持 240
9.2 与ORC相关的Hive配置 241
9.2.1 表配置属性 241
9.2.2 Hive表的配置属性 241
9.3 文件存储格式之Apache Parquet 242
9.3.1 Parquet基本结构 243
9.3.2 Parquet的相关配置 245
9.4 数据归档 245
0章 发现并优化Hive中的性能问题 247
10.1 监控Hive数据库的状态 247
10.2 监控当前集群状态 253
10.3 定位性能瓶颈 258
10.3.1 使用HS2 WebUI排除非大数据组件的问题 258
10.3.2 排查长时等待调度 260
10.3.3 Map任务读取小文件和大文件 261
10.3.4 Reduce的数据倾斜 262
10.3.5 缓慢的Shuffle 264
10.3.6 集群资源的限制 265
10.4 数据倾斜 266
10.4.1 不可拆分大文件引发的数据倾斜 266
10.4.2 业务无关的数据引发的数据倾斜 267
10.4.3 多维聚合计算数据膨胀引起的数据倾斜 268
10.4.4 无法削减中间结果的数据量引发的数据倾斜 268
10.4.5 两个Hive数据表连接时引发的数据倾斜 269
1章 Hive知识体系总结 270
11.1 Hive知识体系 270
11.2 数据粒度 271
11.3 SQL相关 275
11.3.1 select查询语句 276
11.3.2 数据定义语言(DDL) 276
11.3.3 数据控制语言(DML) 279
11.3.4 用户自定义函数(UDF) 280
11.4 文件操作 281
· · · · · · (收起)
喜欢读"Hive性能调优实战"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"Hive性能调优实战"的人也喜欢 · · · · · ·
- Spark权威指南 7.7
- SQL 经典实例 8.0
- Apache Kylin权威指南 8.4
- SQL进阶教程 9.2
- Scala 实用指南 9.0
- 阿里巴巴Java开发手册 8.6
- 大数据系统构建 8.1
Hive性能调优实战的书评 · · · · · · ( 全部 2 条 )
Hive性能调优实战书评
这篇书评可能有关键情节透露
整本书思路清晰,由浅入深,适合对集群初步了解的人。个人感觉书中最重要的两章5,6--深入MapReduce计算引擎,HiveSQL执行计划。读完后会对MapReduce原理,HQL执行计划有一个清晰的认识,感觉这也是深入了解当前分布式计算原理的基础所在。还有Hive数据处理模式,指出不同的HQL... (展开)> 更多书评 2篇
论坛 · · · · · ·
在这本书的论坛里发言当前版本有售 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 看过的书 (程研板)
- 技术路线 (Chris)
- 大数据 (jzhsushine)
- 大数据 (二十四桥明月夜)
- 书单 | 做一个优秀的程序员 (木婉清)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有100人想读,手里有一本闲着?
订阅关于Hive性能调优实战的评论:
feed: rss 2.0
0 有用 Fools 2022-02-08 03:01:49
感觉实际工作后再读一遍会更有收获吧...感觉读了很多篇博客
1 有用 中华有神功 2021-07-10 22:29:21
2021-65 hive性能优化方面比较好的书籍,给出了比较全面的优化视野,干货非常多。看完一遍之后感觉自己有关hive的功力直接加深一个层次。 这样的好书当然不能只看一遍,它适合放在工位旁边,常读常新,不断打磨自己的hive sql。如果你是做数据开发的,特别是数仓相关的,如果没读过这本书,说实话我感觉有点遗憾...这书非常好读 基本不到10个小时就可以通读一遍了。
0 有用 CodeKun 2021-01-18 22:13:49
有干货,但不够系统和精炼,有些优化手段多个章节反复讲
0 有用 Hmgqzx 2021-07-08 20:08:17
【Hive】侏儒里挑矮子
0 有用 吴逸 2022-03-13 17:13:48
基本上 hive 优化的方方面面都涉及到了。而且好像确实目前市面上没有这方面的书。总体来说这本书还是值得学习的。就是书中的错别字有点多。。。
0 有用 NJ 2024-03-19 19:42:22 北京
第4-7章
0 有用 风空之枫 2023-03-04 22:18:32 浙江
2023 年我已经不想真去学 Hive 了,只想过一遍 Insite。本书写于 2019 年,该有的 Hive 1-3 都有,虽然是叫性能调优,但是该有的 insite 都有:包括 LLAP 和不同计算引擎的 Hive;MapReduce / Tez Runtime,如何在 Runtime 上执行/优化 Join / Agg;Bucket / Partition 的物理 Layout;不同文件格式... 2023 年我已经不想真去学 Hive 了,只想过一遍 Insite。本书写于 2019 年,该有的 Hive 1-3 都有,虽然是叫性能调优,但是该有的 insite 都有:包括 LLAP 和不同计算引擎的 Hive;MapReduce / Tez Runtime,如何在 Runtime 上执行/优化 Join / Agg;Bucket / Partition 的物理 Layout;不同文件格式、外表;Job 在 Yarn 上的调度、堆积、查询。相同的是支持 SQL,但是因为 workload 的区别和简陋的实现,有了 Session Manager 这些东西。和我一样简单过一遍的话,本书还是很不错的 (展开)
0 有用 johnny-wong 2022-12-02 20:51:06 上海
2022读过
0 有用 吴逸 2022-03-13 17:13:48
基本上 hive 优化的方方面面都涉及到了。而且好像确实目前市面上没有这方面的书。总体来说这本书还是值得学习的。就是书中的错别字有点多。。。
0 有用 Fools 2022-02-08 03:01:49
感觉实际工作后再读一遍会更有收获吧...感觉读了很多篇博客