本书为“1+X”职业技能等级证书配套教材,按国家1+X 证书制度试点大数据平台运维职业技能等级标准编写。本书从大数据平台运维工程师的角度,由浅入深、全方位地介绍了大数据平台运维的相关实践知识和核心实操。本书共六部分,包括21章:第一部分,大数据平台架构,涉及大数据的特点及发展趋势、大数据的实施和运维流程、大数据的应用场景与案例;第二部分,大数据平台高可用(HA)集群部署,涉及Hadoop集群基础环境的配置、Hadoop HA集群的配置、Hadoop HA集群的启动;第三部分,大数据组件的维护,涉及HBase组件的维护、Hive组件的维护、ZooKeeper组件的维护、ETL组件的维护、Spark组件的维护;第四部分,大数据平台优化,涉及Linux系统优化、HDFS配置优化、MapReduce配置优化、Spark配置优化;第五部分,大数据平台的诊断与处理,涉及Hadoop及生态圈组件负载均衡的诊断与处理、集群节点故障的诊断与处理、集群组件服务故障的诊断与处理;第六部分,大数据平台项目综合案例,涉及数据仓库运维项目实战、金融行业运维项目实战、典型大数据平台监控运维项目实战。本书可作为中职院校和高职院校大数据及计算机类相关专业的教材,也可作为大数据平台运维人员的参考用书。
紫光股份旗下新华三集团作为数字化解决方案领导者,致力于成为客户业务创新、数字化转型最可信赖的合作伙伴。新华三拥有计算、存储、网络、5G、安全等全方位的数字化基础设施整体能力,提供云计算、大数据、人工智能、工业互联网、信息安全、智能联接、新安防、边缘计算等在内的一站式数字化解决方案,以及端到端的技术服务。同时,新华三也是HPE?服务器、存储和技术服务的中国独家提供商。
目录
第一部分 大数据平台架构
第1章 大数据的特点及发展趋势 2
1.1 大数据平台架构概述 2
1.1.1 大数据的概念 2
1.1.2 大数据的特征 3
1.1.3 大数据的处理流程及相关
技术 4
1.1.4 大数据平台架构的特点 5
1.2 大数据平台架构的原理 5
1.3 大数据的发展历程 6
1.3.1 大数据的具体发展过程 6
1.3.2 大数据技术的具体发展历程 7
1.4 大数据的发展趋势 8
1.4.1 大数据技术面临的挑战 8
1.4.2 大数据应用的发展趋势 10
1.5 本章小结 11
第2章 大数据的实施和运维流程 12
2.1 大数据实施和运维工程师的
工作职责 12
2.1.1 大数据职位体系 12
2.1.2 大数据实施工程师的
工作职责 14
2.1.3 大数据运维工程师的
工作职责 15
2.2 大数据实施和运维工程师的
工作能力素养要求 15
2.2.1 大数据实施工程师的
工作能力素养要求 15
2.2.2 大数据运维工程师的
工作能力素养要求 16
2.3 大数据项目实施的工作流程 18
2.3.1 大数据项目规划阶段 18
2.3.2 大数据项目数据治理阶段 19
2.3.3 大数据项目设计阶段 20
2.3.4 大数据项目数据应用阶段 21
2.3.5 大数据项目迭代实施与
应用推广阶段 22
2.4 大数据运维的日常工作 23
2.4.1 应急处置 23
2.4.2 故障报告 24
2.4.3 故障检查 24
2.4.4 故障诊断 25
2.4.5 故障测试与修复 25
2.5 本章小结 26
第3章 大数据的应用场景与案例 27
3.1 大数据平台架构的典型
行业应用场景 27
3.1.1 医疗行业的应用 27
3.1.2 金融行业的应用 28
3.1.3 零售行业的应用 29
3.1.4 地产行业的应用 29
3.1.5 农业的应用 30
3.1.6 政务和智慧城市的应用 30
3.1.7 教育行业的应用 30
3.1.8 环境行业的应用 30
3.2 大数据平台架构的典型
企业应用场景 30
3.2.1 舆情分析 31
3.2.2 商业智能 31
3.3 Hadoop生态圈中行业应用的
典型实战案例 32
3.3.1 电信行业——中国移动
基于Hadoop的大数据应用 32
3.3.2 金融行业——VISA公司
的Hadoop应用案例 33
3.3.3 电商行业——eBay网站
的Hadoop应用案例 33
3.4 Hadoop生态圈中企业应用的
典型实战案例 33
3.4.1 新华三大数据集成平台
在大地影院的应用案例背景 33
3.4.2 大地的应用案例的用户
痛点分析 34
3.4.3 大地的应用案例的项目需求 34
3.4.4 大地的应用案例的数据构成 34
3.4.5 大地的应用案例的技术
方案设计与实现 34
3.4.6 大地的应用案例系统核心组件
(H3C数据集成组件)简介 36
3.4.7 大地的应用案例的系统
优势及成效 36
3.5 本章小结 36
第二部分 大数据平台高可用(HA)集群部署
第4章 Hadoop集群基础环境的配置 38
4.1 Hadoop集群概述 38
4.1.1 Hadoop集群的核心组件 38
4.1.2 Hadoop集群的网络拓扑
结构 40
4.2 平台系统的环境设置 41
4.2.1 Linux系统环境配置 41
4.2.2 创建hadoop用户 43
4.3 Linux防火墙 43
4.3.1 Linux防火墙的种类与特点 44
4.3.2 Linux防火墙管理 45
4.4 SELinux 47
4.4.1 SELinux简介 47
4.4.2 SELinux的功能 47
4.4.3 SELinux的配置 47
4.4.4 关闭集群中的SELinux 47
4.5 配置集群主机之间时钟同步 48
4.5.1 直接同步 48
4.5.2 平滑同步 49
4.6 SSH无密码登录 50
4.6.1 生成SSH密钥 50
4.6.2 交换SSH密钥 51
4.6.3 验证SSH无密码登录 52
4.7 Java环境变量配置 52
4.7.1 JDK功能简介 52
4.7.2 下载JDK安装包 53
4.7.3 JDK的安装与环境变量配置 53
4.8 Hadoop的安装与配置 54
4.8.1 获取Hadoop安装包 54
4.8.2 安装Hadoop软件 54
4.9 本章小结 55
第5章 Hadoop HA集群的配置 56
5.1 Hadoop HA集群的特点 56
5.2 Hadoop HA集群的实现原理 57
5.2.1 HDFS HA的实现原理 57
5.2.2 YARN HA的实现原理 58
5.3 ZooKeeper的特点 58
5.3.1 ZooKeeper的功能原理 58
5.3.2 ZooKeeper集群节点组成 59
5.3.3 ZooKeeper的同步机制 60
5.3.4 ZooKeeper的选举机制 60
5.4 ZooKeeper HA集群 61
5.4.1 在master节点上安装
部署ZooKeeper 61
5.4.2 在master节点上配置
ZooKeeper文件参数 61
5.4.3 分发ZooKeeper给slave1节点
和slave2节点 62
5.5 Hadoop HA集群的文件参数 64
5.5.1 在master节点上配置
Hadoop HA集群的文件参数 64
5.5.2 分发hadoop相关文件给
slave1节点和slave2节点 68
5.6 JournalNode服务 69
5.6.1 JournalNode服务的原理 69
5.6.2 启动JournalNode服务 70
5.7 本章小结 70
第6章 Hadoop HA集群的启动 71
6.1 HDFS的格式化 71
6.1.1 active NameNode的格式化
和启动 71
6.1.2 standby NameNode的格式化
和启动 72
6.1.3 格式化ZKFC 73
6.2 Hadoop HA集群的启动流程 73
6.2.1 启动HDFS 73
6.2.2 启动YARN 74
6.2.3 启动MapReduce的
历史服务器 75
6.3 启动后验证 75
6.3.1 查看进程 75
6.3.2 查看端口 76
6.3.3 运行测试 77
6.4 Hadoop HA集群的主备切换 78
6.4.1 Hadoop HA集群的切换
机制 78
6.4.2 手动切换测试 79
6.4.3 自动切换测试 79
6.5 本章小结 81
第三部分 大数据组件的维护
第7章 HBase组件的维护 84
7.1 NoSQL与传统RDBMS的
差异 84
7.1.1 传统RDBMS及其
应用场景 84
7.1.2 NoSQL简介 85
7.2 HBase组件的原理 86
7.2.1 HBase简介 86
7.2.2 HBase的体系结构 86
7.3 HBase的分布式部署 87
7.3.1 HBase集群环境准备 87
7.3.2 HBase的分布式安装 88
7.4 HBase库/表管理 90
7.4.1 HBase库管理 90
7.4.2 HBase表管理 91
7.5 HBase数据操作 93
7.5.1 基础操作 93
7.5.2 模糊查询 94
7.5.3 批量导入/导出 95
7.6 HBase错误恢复 97
7.7 退出HBase库 98
7.8 卸载HBase库 98
7.9 本章小结 98
第8章 Hive组件的维护 99
8.1 Hive的架构 99
8.1.1 Hive简介 99
8.1.2 Hive的数据类型 100
8.2 分布式部署Hive 101
8.2.1 环境需求 101
8.2.2 MySQL的安装与启动 102
8.2.3 配置Hive参数 103
8.2.4 Beeline CLI远程访问Hive 105
8.3 Hive库操作 106
8.4 Hive表操作 107
8.4.1 创建表 107
8.4.2 查看与修改表 108
8.4.3 删除表和退出Hive 108
8.5 Hive数据操作 109
8.5.1 数据导入 109
8.5.2 查询 110
8.6 Hive宕机恢复 111
8.6.1 数据备份 111
8.6.2 基于HDFS的数据恢复 112
8.6.3 基于MySQL元数据
生成表结构 112
8.7 退出和卸载Hive组件 115
8.7.1 退出Hive 115
8.7.2 卸载Hive 115
8.8 本章小结 115
第9章 ZooKeeper组件的维护 116
9.1 ZooKeeper基础 116
9.1.1 ZooKeeper简介 116
9.1.2 ZooKeeper中的重要概念 117
9.2 ZooKeeper的功能及其优点
和局限性 117
9.2.1 ZooKeeper的功能 117
9.2.2 ZooKeeper的优点 118
9.2.3 ZooKeeper的局限性 118
9.3 ZooKeeper的架构 118
9.4 ZooKeeper仲裁模式 119
9.5 配置ZooKeeper 120
9.6 配置ZooKeeper集群 120
9.6.1 集群环境准备 120
9.6.2 ZooKeeper集群的安装 121
9.7 Zookeeper集群的决策选举 122
9.8 ZooKeeper组件管理 123
9.8.1 JMX管理框架 123
9.8.2 ZooKeeper Shell操作 125
9.9 本章小结 127
第10章 ETL组件的维护 128
10.1 Sqoop概述与架构 128
10.1.1 Sqoop概述 128
10.1.2 Sqoop的架构 129
10.2 Flume概述与架构 130
10.2.1 Flume概述 130
10.2.2 Flume的架构 130
10.3 Kafka概述与架构 131
10.3.1 Kafka概述 131
10.3.2 Kafka的架构 132
10.4 Sqoop导入数据 133
10.5 Sqoop导出数据 134
10.6 修改控制Sqoop组件的
参数 134
10.7 Flume组件代理配置 136
10.8 Flume组件的数据获取 137
10.9 Flume组件管理 137
10.10 Kafka组件的部署 138
10.11 Kafka组件的验证部署 139
10.12 Kafka组件的数据处理 140
10.13 本章小结 141
第11章 Spark组件的维护 142
11.1 Spark概述与架构 142
11.1.1 Spark概述 142
11.1.2 Spark的架构 144
11.2 Spark的工作原理 146
11.3 Scala的安装部署 148
11.3.1 Scala简介 148
11.3.2 Scala的安装 148
11.4 安装Spark 149
11.4.1 Spark模式介绍 149
11.4.2 Spark的安装部署 151
11.5 修改Spark参数 154
11.5.1 Spark属性 154
11.5.2 环境变量 155
11.5.3 Spark日志 156
11.5.4 覆盖配置目录 156
11.6 Spark Shell编程 156
11.6.1 Spark Shell概述 156
11.6.2 Spark Shell操作 156
11.7 Spark的基本管理 158
11.8 本章小结 160
第四部分 大数据平台优化
第12章 Linux系统优化 162
12.1 Linux系统优化工具 162
12.1.1 free命令 162
12.1.2 top命令 163
12.2 优化Linux系统的内存 164
12.2.1 将hadoop用户添加到
sudo组中 164
12.2.2 避免使用Swap分区 164
12.2.3 脏页配置优化 165
12.3 优化Linux系统网络 167
12.3.1 关闭Linux防火墙 167
12.3.2 禁用IPv6 167
12.3.3 修改somaxconn参数 167
12.3.4 Socket读/写缓冲区的
调优 168
12.3.5 iperf网络测试工具 169
12.4 优化Linux系统磁盘 169
12.4.1 I/O调度器的选择 169
12.4.2 禁止记录访问时间戳 171
12.5 优化Linux文件系统 172
12.5.1 增大可打开文件描述符的
数目 172
12.5.2 关闭THP 172
12.5.3 关闭SELinux 173
12.6 优化Linux系统预读缓冲区 173
12.7 本章小结 174
第13章 HDFS配置优化 175
13.1 HDFS概述 175
13.1.1 HDFS写数据流程 176
13.1.2 HDFS读数据流程 176
13.2 存储优化 176
13.2.1 合理的副本系数 177
13.2.2 合理的数据块大小 178
13.3 磁盘I/O优化 179
13.3.1 多数据存储目录 179
13.3.2 开启HDFS的短路本地
读配置 183
13.4 节点通信优化 183
13.4.1 延迟blockreport次数 183
13.4.2 增大DataNode文件并发
传输的大小 184
13.4.3 增大NameNode工作线
程池的大小 184
13.4.4 增加DataNode连接
NameNode的RPC请求的
线程数量 185
13.4.5 调整DataNode用于平衡
操作的带宽 185
13.5 其他常见的优化项 186
13.5.1 避免读取“过时”的
DataNode 186
13.5.2 避免写入失效的
DataNode 186
13.5.3 为MapReduce任务保留
一些硬盘资源 187
13.6 本章小结 187
第14章 MapReduce配置优化 188
14.1 MapReduce概述 188
14.2 Map阶段的优化 190
14.2.1 降低溢出(spill)的次数 190
14.2.2 在Map Task结束前对spill
文件进行合并 191
14.2.3 减少合并写入磁盘文件的
数据量 192
14.2.4 控制Map中间结果是否
使用压缩 192
14.2.5 选择Map中间结果的
压缩算法 193
14.3 Reduce阶段的优化 193
14.3.1 Reduce Task的数量 193
14.3.2 Reduce I/O的相关参数 195
14.3.3 Reduce Shuffle阶段并行
传输数据的数量 196
14.3.4 tasktracker并发执行的
Reduce数 196
14.3.5 可并发处理来自tasktracker
的RPC请求数 197
14.4 本章小结 197
第15章 Spark配置优化 198
15.1 优化Spark Streaming配置 198
15.1.1 Spark Streaming简介 198
15.1.2 Spark参数的配置方式 199
15.1.3 Spark常用的优化参数 202
15.2 优化Spark读取Kafka 202
15.2.1 Spark参数设置 202
15.2.2 Kafka参数设置 203
15.3 优化读取Flume 205
15.3.1 Flume参数设置 205
15.3.2 接收端参数设置 206
15.3.3 Spark读取Flume 206
15.4 优化Spark写入HDFS 208
15.4.1 Spark Shell读取并
写入HDFS 208
15.4.2 显示调用Hadoop API
写入HDFS 208
15.4.3 Spark Streaming实时
监控HDFS 209
15.5 优化Spark Scala代码 210
15.5.1 Scala编程技巧 210
15.5.2 Scala数据优化 211
15.6 本章小结 212
第五部分 大数据平台的诊断与处理
第16章 Hadoop及生态圈组件负载均衡
的诊断与处理 214
16.1 HDFS磁盘负载不均衡问题
及解决方案 214
16.1.1 问题概述 214
16.1.2 磁盘负载不均衡的原因
与影响 215
16.1.3 HDFS磁盘负载不均衡
的解决方案 215
16.2 MapReduce负载不均衡
问题 215
16.2.1 问题概述 215
16.2.2 MapReduce的原理分析 216
16.2.3 MapReduce负载不均衡的
解决方案 216
16.3 Spark负载不均衡问题 216
16.3.1 问题概述 216
16.3.2 Spark负载不均衡的危害 217
16.3.3 Spark负载不均衡的原因 217
16.3.4 问题发现与定位 217
16.3.5 Spark负载不均衡的
解决方案 218
16.3.6 自定义Partitioner 219
16.3.7 Reduce端Join转化为
Map端Join 219
16.4 HBase负载不均衡问题 220
16.4.1 问题概述 220
16.4.2 HBase负载不均衡的
原因及解决方案 220
16.4.3 性能指标 221
16.5 Hive数据不均衡问题 222
16.5.1 问题概述 222
16.5.2 Hive数据不均衡的
原因及解决方案 223
16.5.3 Hive的典型业务场景 223
16.6 本章小结 224
第17章 集群节点故障的诊断与处理 225
17.1 使用集群日志对节点
故障进行诊断 225
17.1.1 Hadoop集群中的
日志文件 226
17.1.2 日志主要结构解析 226
17.1.3 日志级别分析 227
17.2 使用集群告警信息诊断节点
故障 227
17.2.1 集群告警信息监控 227
17.2.2 集群节点主机告警信息 228
17.3 Ganglia大数据集群
节点监控 229
17.4 处理集群节点故障 230
17.4.1 集群节点硬件异常 230
17.4.2 集群节点组件及系统异常 231
17.5 本章小结 231
第18章 集群组件服务故障的诊断
与处理 232
18.1 使用集群日志诊断组件
服务故障问题 232
18.1.1 大数据集群常见
故障问题 232
18.1.2 集群中各组件日志解析 232
18.2 使用集群告警信息诊断组件
服务故障问题 234
18.3 制订集群告警信息诊断组件
服务故障问题的解决方案 236
18.3.1 Nagios简介 236
18.3.2 Nagios的工作原理 236
18.3.3 Nagios的功能与用途 236
18.3.4 Nagios的监测模式 237
18.4 处理集群告警信息诊断组件
服务故障问题 238
18.4.1 Hadoop常见故障问题分析 238
18.4.2 Nagios配置监控
Hadoop日志 239
18.5 本章小结 240
第六部分 大数据平台项目综合案例
第19章 数据仓库运维项目实战 242
19.1 项目背景和流程 242
19.1.1 项目背景 242
19.1.2 项目流程 243
19.2 数据的说明、导入及清洗
和预处理 244
19.2.1 数据说明 244
19.2.2 数据导入 245
19.2.3 清洗和预处理 246
19.3 Hive建仓 248
19.3.1 数据仓库的分层设计 248
19.3.2 Hive数据入仓 249
19.3.3 业务调用 252
19.4 本章小结 253
第20章 金融行业运维项目实战 254
20.1 项目背景和流程 254
20.1.1 项目背景 254
20.1.2 项目流程 255
20.2 数据说明及清洗 255
20.2.1 数据说明 255
20.2.2 数据清洗 256
20.3 数据分析 258
20.3.1 借款金额分布 258
20.3.2 借款等级分布 258
20.3.3 借款等级与借款金额的
关联关系 259
20.3.4 借款金额与工作年限、
年收入的关联关系 259
20.3.5 借款金额与房屋所有权
状态的关联关系 260
20.4 数据可视化 260
20.5 综合分析 264
20.6 本章小结 264
第21章 典型大数据平台监控运维
项目实战 265
21.1 实验背景和流程 265
21.1.1 实验背景 265
21.1.2 实验流程 266
21.2 数据说明及预处理 267
21.2.1 数据说明 267
21.2.2 数据预处理 267
21.3 安装Ganglia 269
21.3.1 安装Ganglia所需的依赖 269
21.3.2 监控端安装Gmeta、
Gmond、Gweb、
Nginx、Php 270
21.3.3 被监控端安装Gmond 274
21.4 开启Ganglia 274
21.4.1 修改Ganglia-monitor的
配置文件 274
21.4.2 主节点配置 275
21.4.3 修改Hadoop的配置文件 275
21.4.4 重启所有服务 276
21.4.5 访问页面查看各机器的
节点信息 276
21.5 进行上传操作 277
21.6 进行查询操作 278
21.7 Ganglia监控结果 279
21.7.1 基本指标 279
21.7.2 上传操作前后集群状态的
变化 279
21.7.3 查询操作前后集群状态的
变化 280
21.8 本章小结 281