Hadoop是使用最广泛的大数据处理框架之一,在大数据领域有着极其重要的地位,掌握Hadoop可以让学习者对大数据的理解更进一步。本书是基于Hadoop 3.1.3编写的,从大数据的特点和处理难点入手,逐步讲解Hadoop的起源和发展。从搭建Hadoop的学习环境开始,依次对Hadoop的三大功能模块进行重点讲解,并且结合大量案例,细致地讲解HDFS、MapReduce、YARN的内核原理和调优方法,还会扩展讲解Hadoop的高可用实现、在生产环境中的调优方法及源码解读。本书广泛适用于大数据的学习者与从业人员,是大数据学习的必备书籍。
尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
第1章 大数据概论 1
1.1 大数据的特征 1
1.2 大数据的发展前景 2
1.2.1 大数据的应用场景 2
1.2.2 大数据的未来发展 3
1.3 大数据生态体系与Hadoop 4
1.3.1 Hadoop的发展史 4
1.3.2 大数据生态体系 5
1.3.3 Hadoop架构 7
1.4 本章总结 10
第2章 环境准备 11
2.1 安装VMware 11
2.2 安装CentOS 11
2.3 安装远程终端 19
2.3.1 安装Xshell 19
2.3.2 安装SecureCRT 21
2.4 虚拟机配置 23
2.4.1 网络配置 23
2.4.2 网络IP地址配置 24
2.4.3 主机名配置 25
2.4.4 防火墙配置 25
2.4.5 一般用户配置 26
2.4.6 克隆虚拟机 26
2.5 本章总结 27
第3章 Hadoop快速上手 28
3.1 集群角色 28
3.1.1 Hadoop集群的主要角色 28
3.1.2 YARN的主要组成部分 28
3.2 本地模式 30
3.2.1 安装 30
3.2.2 运行官方示例程序 32
3.3 完全分布式模式 33
3.3.1 SSH免密登录 33
3.3.2 shell脚本准备 34
3.3.3 集群配置 36
3.3.4 NameNode格式化问题 42
3.3.5 配置历史服务器与日志聚集功能 44
3.3.6 Hadoop集群启停脚本 47
3.3.7 集群时间同步 48
3.4 本章总结 50
第4章 分布式文件系统HDFS 51
4.1 HDFS概述 51
4.1.1 HDFS背景及定义 51
4.1.2 HDFS的基本架构 52
4.2 HDFS的shell操作 53
4.2.1 命令大全 53
4.2.2 命令行命令实操 54
4.3 HDFS的API操作 58
4.3.1 客户端环境准备 58
4.3.2 HDFS文件上传案例 61
4.3.3 HDFS文件下载案例 62
4.3.4 HDFS文件重命名案例 63
4.3.5 HDFS文件删除案例 63
4.3.6 HDFS文件详情查看案例 63
4.3.7 HDFS文件和文件夹判断案例 64
4.4 HDFS的读/写流程 65
4.4.1 HDFS中的数据块大小 65
4.4.2 写数据流程 65
4.4.3 读数据流程 68
4.5 HDFS的工作机制 69
4.5.1 NameNode和SecondaryNameNode的工作机制 69
4.5.2 EditLog和FsImage文件解析 70
4.5.3 检查点时间设置 76
4.5.4 DataNode的工作机制 76
4.5.5 数据完整性 77
4.6 本章总结 78
第5章 分布式计算MapReduce 79
5.1 MapReduce概述 79
5.1.1 MapReduce定义 79
5.1.2 MapReduce核心思想 80
5.2 MapReduce编程入门 81
5.2.1 官方示例程序WordCount源码 81
5.2.2 编程规范 82
5.2.3 WordCount案例实操 82
5.3 Hadoop的序列化 89
5.3.1 序列化概述 89
5.3.2 Writable接口 89
5.3.3 序列化案例实操 90
5.4 MapReduce框架原理之InputFormat数据输入 96
5.4.1 切片与MapTask并行度决定机制 96
5.4.2 Job提交流程源码和FileInputFormat切片源码详解 98
5.4.3 FileInputFormat切片机制总结 101
5.4.4 TextInputFormat 101
5.4.5 CombineTextInputFormat切片机制 102
5.4.6 CombineTextInputFormat案例实操 103
5.5 MapReduce框架原理之shuffle机制 104
5.5.1 shuffle机制 104
5.5.2 分区 105
5.5.3 分区案例实操 106
5.5.4 WritableComparable排序 110
5.5.5 WritableComparable排序案例实操(全排序) 111
5.5.6 WritableComparable排序案例实操(区内排序) 116
5.5.7 Combiner合并 119
5.5.8 Combiner合并案例实操 120
5.6 MapReduce框架原理之OutputFormat数据输出 121
5.6.1 OutputFormat接口的实现类 121
5.6.2 自定义OutputFormat类的案例实操 122
5.7 MapReduce工作流程 126
5.8 Join 127
5.8.1 Reduce Join 127
5.8.2 Reduce Join案例实操 127
5.8.3 Map Join 133
5.8.4 Map Join案例实操 134
5.9 数据清洗 137
5.10 Hadoop中的数据压缩 139
5.10.1 数据压缩概述 139
5.10.2 压缩参数配置 140
5.10.3 压缩案例实操 141
5.11 本章总结 145
第6章 资源调度器YARN 146
6.1 YARN概述 146
6.1.1 基本架构 147
6.1.2 工作机制 148
6.2 YARN的资源调度器和调度算法 150
6.2.1 FIFO调度器 150
6.2.2 容量调度器 150
6.2.3 公平调度器 152
6.3 YARN实操 156
6.3.1 常用的命令行命令 156
6.3.2 核心参数 158
6.3.3 核心参数配置案例 159
6.3.4 容量调度器配置案例 163
6.3.5 公平调度器配置案例 168
6.3.6 Tool接口案例 171
6.4 本章总结 174
第7章 高可用HA 175
7.1 ZooKeeper详解 175
7.1.1 ZooKeeper入门 175
7.1.2 ZooKeeper安装 178
7.1.3 ZooKeeper的内部原理 180
7.1.4 ZooKeeper的命令操作 181
7.2 HA概述 188
7.2.1 什么是HA 188
7.2.2 HDFS HA的工作机制 188
7.3 Hadoop HA集群的搭建 189
7.3.1 HDFS HA手动故障转移 189
7.3.2 HDFS HA自动故障转移 192
7.3.3 YARN HA 195
7.3.4 Hadoop HA集群规划 199
7.4 本章总结 199
第8章 生产调优手册 200
8.1 HDFS的核心参数 200
8.1.1 NameNode的内存生产配置 200
8.1.2 NameNode心跳并发配置 202
8.1.3 启用回收站功能 203
8.2 HDFS集群压测 204
8.2.1 测试HDFS的写性能 205
8.2.2 测试HDFS的读性能 207
8.3 HDFS的多目录配置 208
8.3.1 NameNode的多目录配置 208
8.3.2 DataNode的多目录配置 208
8.3.3 集群数据均衡之磁盘之间的数据均衡 209
8.4 HDFS集群的扩容及缩容 209
8.4.1 添加白名单 209
8.4.2 服役新服务器 212
8.4.3 服务器之间的数据均衡 214
8.4.4 黑名单退役服务器 214
8.5 HDFS的存储优化策略 216
8.5.1 纠删码 216
8.5.2 异构存储 218
8.6 HDFS的故障排除 223
8.6.1 NameNode故障处理 223
8.6.2 集群安全模式&磁盘数据损坏 224
8.6.3 慢磁盘监控 226
8.6.4 小文件存档 227
8.7 MapReduce的生产经验 228
8.7.1 MapReduce程序运行较慢的原因 228
8.7.2 MapReduce的常用调优参数 229
8.7.3 MapReduce的数据倾斜 231
8.8 Hadoop的综合调优 232
8.8.1 Hadoop的小文件优化方法 232
8.8.2 测试MapReduce的计算性能 233
8.8.3 企业开发场景案例 234
8.9 本章总结 239
第9章 源码解析 240
9.1 RPC通信原理 240
9.2 NameNode启动源码解析 243
9.2.1 查看源码的准备工作 243
9.2.2 启动9870端口服务 246
9.2.3 加载镜像文件和编辑日志文件 247
9.2.4 初始化RPC服务器端 248
9.2.5 检查资源 249
9.2.6 检测心跳信息并进行超时判断 252
9.2.7 退出安全模式 255
9.3 DataNode启动源码解析 257
9.3.1 查看源码的准备工作 257
9.3.2 初始化DataXceiverServer 259
9.3.3 初始化HTTP服务 260
9.3.4 初始化RPC服务器端 261
9.3.5 DataNode向NameNode注册 262
9.3.6 DataNode向NameNode发送心跳信息 266
9.4 HDFS写数据流程的源码解析 268
9.4.1 查看源码的准备工作 269
9.4.2 Client向NameNode发起写请求 269
9.4.3 NameNode处理Client的写请求 270
9.4.4 DataStreamer启动流程 271
9.4.5 向DataStreamer的队列中写数据 274
9.4.6 建立管道之机架感知 276
9.4.7 建立管道之socket发送 278
9.4.8 建立管道之socket接收 280
9.4.9 客户端接收DataNode的写数据响应 283
9.5 YARN源码解析 284
9.5.1 查看源码的准备工作 284
9.5.2 创建YARN客户端并提交任务 286
9.5.3 启动MRAppMaster 288
9.5.4 调度器任务执行 291
9.6 Hadoop的源码编译 294
9.6.1 前期准备工作 295
9.6.2 安装工具包 295
9.6.3 编译源码 297
9.7 本章总结 298