本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
9787111644323 9787115502179
书 名: hive性能调优实战
图书定价: 89元
作 者: 林志煌
出 版 社: 机械工业出版社
出版日期: 2019-12-23
ISBN 号: 9787111644323
开 本: 16开
页 数: 296
版 次: 1-1
本书是一本关于Apache Hive调优的书籍,旨在介绍如何进行Hive的调优,以及调优时如果使用的工具。本书在开始会介绍Hive优化多面性,以及如何在众多的调优技巧中寻找一条调优的思路。接着介绍Hive安装,为了方便读者的练习,我们主要介绍Docker安装Hive的方式和使用cloudera提供工具Hive的方式。介绍完安装Hive方式,我们会继续介绍Hive在优化时涉及的Hadoop组件和Hive工具。后会介绍如何监控Hive在运行时出现性能问题。本书适合对大数据开发感兴趣的爱好者、对Hive优化有兴趣的人员使用。
前言
1章 举例感受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 Namede联盟 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 de 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
10章 发现并优化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
11章 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
Hadoop大数据开发实战
内容简介
本书将大数据技术生态圈主流技术框架的应用与发展、搭建Hadoop大数据分布式集平台、大数据分布式文件HDFS(Hadoop Distributed File System)、大数据分布式并行计算框架MapReduce、大数据汽车销售数据统计分析项目5大模块分为11章内容进行阐述。具体分布情况如下:1章是大数据概论,介绍大数据的发展背景及基本概念;2章是搭建Hadoop分布式集;3~6章是HDFS分布式文件入门、HDFS接口、HDFS的运行机制、Hadoop I/O流作;7~10章是初识MapReduce编程模型、MapReduce应用编程开发、MapReduce编程案例、MapReduce运行机制与YARN平台;11章是汽车销售数据统计分析项目实战。本书将理论与实践相结合,介绍了大数据的核心技术,并通过介绍一个企业的开发项目,深入讲解大数据技术在实际工作中的应用。
本书是为所有热爱大数据、打算从事大数据相关工作的读者而编写的,适合有Java编程基础的学习者参考使用,也适合作为高等院校、培训机构的大数据技术教材。
目录
1章 大数据概论 1
1.1 大数据的学习基础 1
1.2 大数据的背景 2
1.3 对大数据的不同认识 2
1.3.1 编程者眼中的大数据 2
1.3.2 营销者和学者眼中的大数据 3
1.3.3 商家看大数据 4
1.4 大数据的行业案例 4
1.4.1 电子地图 4
1.4.2 电子商务——用户画像 5
1.5 大数据的基本概念 6
1.5.1 两个核心 6
1.5.2 分布式存储 6
1.5.3 分布式计算 7
1.6 大数据技术生态圈 7
本章总结 8
本章习题 8
2章 搭建Hadoop分布式集 9
2.1 云平台 9
2.1.1 了解云平台 9
2.1.2 安装VMware软件 9
2.2 安装CentOS 6 10
2.2.1 安装CentOS 6 10
2.2.2 安装中的关键问题 15
2.2.3 克隆HadoopSlave和HadoopSlave1 16
2.2.4 安装SSH客户端传输软件 18
2.2.5 安装Xshell 20
2.3 Linux配置 23
2.4 Hadoop的配置部署 39
本章总结 47
本章习题 47
3章 HDFS入门 48
3.1 Hadoop分布式文件HDFS 48
3.1.1 认识HDFS 48
3.1.2 HDFS的优势 49
3.1.3 HDFS局限性 50
3.1.4 HDFS特性 51
3.2 HDFS核心设计 52
3.2.1 数据块 53
3.2.2 数据块复制 53
3.2.3 数据块副本的存放策略 54
3.2.4 机架感知 55
3.2.5 数据块的备份数 56
3.2.6 安全模式 56
3.2.7 负载均衡 57
3.2.8 心跳机制 60
3.3 HDFS体系结构 60
3.3.1 主从架构 61
3.3.2 核心组件功能 61
3.3.3 数据块损坏处理 63
本章总结 64
本章习题 64
4章 HDFS接口 65
4.1 HDFS命令行接口 65
4.2 HDFS Java接口 67
4.2.1 在Linux虚拟机中安装Eclipse 68
4.2.2 从Hadoop URL读取数据 69
4.2.3 使用FileSystem读取文件 70
4.2.4 FSDataInputStream对象随机读取 71
4.2.5 使用FileSystem写入数据 72
4.2.6 FSDataOutputStream对象批量写入 73
4.2.7 查询文件状态FileStatus 74
4.2.8 创建目录 75
4.2.9 删除文件与目录 76
本章总结 77
本章习题 77
5章 HDFS的运行机制 78
5.1 HDFS中数据流的读写 78
5.1.1 RPC流程 78
5.1.2 RPC实现模型 79
5.1.3 RPC Client主要流程 81
5.1.4 RPC Server实现模型 82
5.1.5 文件读取 83
5.1.6 文件写入 84
5.2 HA机制 85
5.2.1 HDFS的HA机制 85
5.2.2 集节点任务规划 87
5.2.3 初识ZooKeeper 87
5.2.4 安装部署ZooKeeper 89
5.2.5 格式化ZooKeeper集 93
5.2.6 配置Hadoop 94
5.2.7 启动Journalde共享存储集 99
5.2.8 格式化ActiveNamede 100
5.2.9 启动ZooKeeperFailoverController 101
5.2.10 启动ActiveNamede 101
5.2.11 格式化StandbyNamede 102
5.2.12 启动所有Datade节点 102
5.2.13 验证HA的故障自动转移 103
5.3 Federation机制 105
5.3.1 初始HDFS Federation机制 105
5.3.2 HDFS Federation架构原理 106
本章总结 107
本章习题 107
6章 Hadoop I/O流作 108
6.1 数据完整性 108
6.1.1 数据发生 108
6.1.2 数据的检测 109
6.1.3 数据完整性机制 109
6.2 压缩 111
6.2.1 压缩格式 111
6.2.2 Hadoop中对压缩格式的实现Codec 111
6.2.3 压缩格式是否支持切分 114
6.3 序列化 114
6.3.1 序列化简介 114
6.3.2 反序列化 115
6.3.3 序列化的分布式应用 115
6.3.4 初识Hadoop序列化 115
6.3.5 Hadoop序列化实现 116
6.3.6 接口Comparable & Comparator与WritableComparable & WritableComparator 117
6.3.7 Writable类 123
6.4 基于文件的数据结构SequenceFile 125
本章总结 127
本章习题 127
7章 初识MapReduce编程模型 128
7.1 MapReduce编程框架 128
7.1.1 函数式编程模型 128
7.1.2 MapReduce编程模型概念 129
7.1.3 MapReduce的设计目标 130
7.2 WordCount编程实例 130
7.2.1 案例需求 130
7.2.2 搭建开发环境Eclipse 131
7.2.3 代码实现 132
7.2.4 代码测试 135
7.2.5 案例剖析 139
7.3 Hadoop MapReduce架构 141
7.3.1 Hadoop MapReduce架构的基本概念 141
7.3.2 MapReduce架构核心组件 142
本章总结 144
本章习题 144
8章 MapReduce应用编程开发 145
8.1 MapReduce编程开发 145
8.1.1 设计思路 145
8.1.2 搜索引擎数据处理实战 147
8.2 MapReduce在集上的运作 152
8.2.1 打包作业 152
8.2.2 启动作业 154
8.2.3 通过WebUI查看Job状态 154
8.3 MapReduce的类型与格式 155
8.3.1 combiner函数 155
8.3.2 MapReduce框架Partitioner分区方法 157
8.3.3 MapReduce输入格式 158
本章总结 166
本章习题 166
9章 MapReduce编程案例 167
9.1 数据去重 167
9.1.1 实例表述 167
9.1.2 设计思路 168
9.1.3 程序代码 168
9.1.4 代码结果 169
9.2 数据排序 170
9.2.1 实例表述 171
9.2.2 设计思路 171
9.2.3 程序代码 171
9.2.4 代码结果 173
9.3 平均成绩 174
9.3.1 实例表述 174
9.3.2 设计思路 175
9.3.3 程序代码 175
9.3.4 代码结果 177
9.4 多表关联 178
9.4.1 实例表述 178
9.4.2 设计思路 179
9.4.3 程序代码 179
9.4.4 代码结果 181
9.5 二次排序 182
9.5.1 实例描述 182
9.5.2 设计思路 182
9.5.3 程序代码 182
9.5.4 代码结果 185
本章总结 186
本章习题 186
10章 MapReduce运行机制与YARN平台 187
10.1 剖析MapReduce作业运行机制 187
10.1.1 提交作业的方式 187
10.1.2 作业的运行组件 187
10.1.3 作业的运行解析 188
10.2 Shuffle和排序 190
10.2.1 Mapper端 190
10.2.2 Reducer端 193
10.2.3 MapReduce性能调优 196
10.3 任务的执行 197
10.4 作业的调度 199
10.4.1 先进先出调度器 199
10.4.2 公平调度器 199
10.4.3 计算能力调度器 200
10.5 YARN平台简介 200
10.5.1 YARN的诞生 200
10.5.2 YARN的工作原理 200
10.6 YARN平台架构 201
本章总结 204
本章习题 204
11章 汽车销售数据统计分析项目 205
11.1 数据概况 205
11.2 项目实战 206
11.2.1 统计乘用车辆和商用车辆的数量和销售额分布 206
11.2.2 统计某年每个月的汽车销售数量的比例 208
11.2.3 统计某个月份各市区县的汽车销售的数量 210
11.2.4 用户数据市场分析——统计买车的男女比例 213
11.2.5 统计不同所有权、型号和类型汽车的销售数量 216
11.2.6 统计不同车型的用户的年龄和性别 218
11.2.7 统计分析不同车型销售数据 219
11.2.8 通过不同类型(品牌)汽车销售情况统计发动机型号和燃料种类 222
11.2.9 统计同排量不同品牌汽车的销售量 224
本章总结 226
本章习题 226