本书采用理论与实践相结合的方式,全面介绍了Hadoop大数据技术。主要内容包括初识Hadoop大数据技术、Hadoop环境配置,分布式文件系统HDFS、资源调度框架YARN、分布式计算框架MapReduce、大数据数据仓库Hive、分布式数据库HBase、查询大型半结构化数据集的语言Pig、分布式日志采集工具Flume、分布式数据库与传统数据库数据相互转换工具Sqoop。
1.采用理论和实践相结合方式全面介绍Hadoop技术
2.内容包括Hadoop环境配置,分布式文件系统HDFS、资源调度框架YARN、分布式计算框架MapReduce、大数据数据仓库Hive、分布式数据库HBase、查询大型半结构化数据集的语言Pig、分布式日志采集工具Flume、分布式数据库与传统数据库数据相互转换工具Sqoop、提供分布式协调一致性服务的ZooKeeper、Hadoop快速部署工具Ambari、提供可扩展的机器学习领域经典算法的Mahout
杨治明,教授,现任重庆科技学院数理与大数据学院院长,数据科学与大数据技术专业负责人。现任重庆市教委教育信息化专家委员会成员、重庆市人工智能技术创新战略联盟专家委员会成员。获得国家级教学成果奖1项、重庆市高等教育教学成果奖二等奖、三等奖各1项。
第1章 初识Hadoop大数据技术 1
1.1 大数据技术概述 1
1.1.1 大数据产生的背景 1
1.1.2 大数据的定义 2
1.1.3 大数据技术的发展 2
1.2 Google的“三驾马车” 3
1.2.1 GFS的思想 3
1.2.2 MapReduce的思想 4
1.2.3 BigTable的思想 6
1.3 Hadoop概述 8
1.3.1 Hadoop对Google公司三篇论文思想的实现 8
1.3.2 Hadoop的发展历史 9
1.3.3 Hadoop版本的演变 11
1.3.4 Hadoop的发行版本 12
1.3.5 Hadoop的特点 12
1.4 Hadoop生态圈 12
1.5 Hadoop的典型应用场景与应用架构 13
1.5.1 Hadoop的典型应用场景 13
1.5.2 Hadoop的典型应用架构 14
习题 15
第2章 Hadoop环境设置 16
2.1 安装前准备 16
2.1.1 安装虚拟机 17
2.1.2 安装Ubuntu操作系统 20
2.1.3 关闭防火墙 22
2.1.4 SSH安装 22
2.1.5 安装Xshell及Xftp 22
2.1.6 安装JDK 24
2.1.7 下载Hadoop并解压 25
2.1.8 克隆主机 27
2.2 Hadoop的安装 28
2.2.1 安装单机模式 28
2.2.2 安装伪分布式模式 29
2.2.3 安装完全分布式模式 35
习题 41
实验 搭建Hadoop伪分布式模式环境 42
第3章 HDFS 44
3.1 HDFS简介 44
3.2 HDFS的组成与架构 45
3.2.1 NameNode 45
3.2.2 DataNode 46
3.2.3 SecondaryNameNode 46
3.3 HDFS的工作机制 47
3.3.1 机架感知与副本冗余存储策略 47
3.3.2 文件读取 49
3.3.3 文件写入 50
3.3.4 数据容错 52
3.4 HDFS操作 53
3.4.1 通过Web界面进行HDFS操作 53
3.4.2 通过HDFS Shell进行HDFS操作 54
3.4.3 通过HDFS API进行HDFS操作 60
3.5 HDFS的高级功能 68
3.5.1 安全模式 68
3.5.2 回收站 69
3.5.3 快照 70
3.5.4 配额 71
3.5.5 高可用性 71
3.5.6 联邦 72
习题 74
实验1 通过Shell命令访问HDFS 74
实验2 熟悉基于IDEA+Maven的Java开发环境 77
实验3 通过API访问HDFS 86
第4章 YARN 90
4.1 YARN产生的背景 90
4.2 初识YARN 92
4.3 YARN的架构 93
4.3.1 YARN架构概述 93
4.3.2 YARN中应用运行的机制 94
4.3.3 YARN中任务进度的监控 94
4.3.4 MapReduce 1与YARN的组成对比 95
4.4 YARN的调度器 95
4.4.1 先进先出调度器 95
4.4.2 容器调度器 96
4.4.3 公平调度器 97
4.4.4 三种调度器的比较 98
习题 98
第5章 MapReduce 99
5.1 MapReduce概述 99
5.1.1 MapReduce是什么 99
5.1.2 MapReduce的特点 99
5.1.3 MapReduce不擅长的场景 100
5.2 MapReduce编程模型 100
5.2.1 MapReduce编程模型概述 100
5.2.2 MapReduce编程实例 101
5.3 MapReduce编程进阶 112
5.3.1 MapReduce的输入格式 112
5.3.2 MapReduce的输出格式 114
5.3.3 分区 115
5.3.4 合并 118
5.4 MapReduce的工作机制 119
5.4.1 MapReduce作业的运行机制 119
5.4.2 进度和状态的更新 120
5.4.3 Shuffle 121
5.5 MapReduce编程案例 122
5.5.1 排序 122
5.5.2 去重 126
5.5.3 多表查询 127
习题 129
实验1 分析和编写WordCount程序 130
实验2 MapReduce序列化、分区实验 131
实验3 使用MapReduce求出各年销售笔数、各年销售总额 134
实验4 使用MapReduce统计用户在搜狗上的搜索数据 136
第6章 HBase、Hive、Pig 139
6.1 HBase 139
6.1.1 行式存储与列式存储 139
6.1.2 HBase简介 140
6.1.3 HBase的数据模型 141
6.1.4 HBase的物理模型 143
6.1.5 HBase的系统架构 144
6.1.6 HBase的安装 147
6.1.7 访问HBase 152
6.2 Hive 157
6.2.1 安装Hive 157
6.2.2 Hive的架构与工作原理 160
6.2.3 Hive的数据类型与存储格式 163
6.2.4 Hive的数据模型 167
6.2.5 查询数据 169
6.2.6 用户定义函数 170
6.3 Pig 171
6.3.1 Pig概述 171
6.3.2 安装Pig 172
6.3.3 Pig Latin编程语言 172
6.3.4 Pig代码实例 177
6.3.5 用户自定义函数 179
习题 181
实验1 HBase实验——安装和配置(可选) 181
实验2 HBase实验——通过HBase Shell访问HBase(可选) 185
实验3 HBase实验——通过Java API访问HBase 187
实验4 HBase实验——通过Java API开发基于HBase的MapReduce程序 189
实验5 Hive实验——Metastore采用Local模式(MySQL数据库)搭建Hive环境(可选) 191
实验6 Hive实验——Hive常用操作 193
实验7 Pig实验——安装和使用Pig(可选) 194
实验8 Pig实验——使用Pig Latin操作员工表和部门表 195
第7章 Flume 198
7.1 Flume产生的背景 198
7.2 Flume简介 198
7.3 Flume的安装 199
7.4 Flume的架构 200
7.5 Flume的应用 201
7.5.1 Flume的组件类型及其配置项 201
7.5.2 Flume的配置和运行方法 206
7.5.3 Flume配置示例 207
7.6 Flume的工作方式 209
习题 210
实验1 Flume的配置与使用1——Avro Source + Memory Channel + Logger Sink 211
实验2 Flume的配置与使用2——Syslogtcp Source + Memory Channel + HDFS Sink 212
实验3 Flume的配置与使用3——Exec Source + Memory Channel + Logger Sink 213
第8章 Sqoop 214
8.1 Sqoop背景简介 214
8.2 Sqoop的基本原理 215
8.3 Sqoop的安装与部署 216
8.3.1 下载与安装 216
8.3.2 配置Sqoop 217
8.4 Sqoop应用 219
8.4.1 列出MySQL数据库的基本信息 219
8.4.2 MySQL和HDFS数据互导 219
8.4.3 MySQL和Hive数据互导 220
习题 221
实验 Sqoop常用功能的使用 222
第9章 ZooKeeper 227
9.1 ZooKeeper简介 227
9.2 ZooKeeper的安装 228
9.2.1 单机模式 228
9.2.2 集群模式 229
9.3 ZooKeeper的基本原理 231
9.3.1 Paxos算法 231
9.3.2 Zab算法 232
9.3.3 ZooKeeper的架构 232
9.3.4 ZooKeeper的数据模型 233
9.4 ZooKeeper的简单操作 235
9.4.1 通过ZooKeeper Shell命令操作ZooKeeper 235
9.4.2 通过ZooInspector工具操作ZooKeeper 238
9.4.3 通过Java API操作ZooKeeper 238
9.5 ZooKeeper的特性 239
9.5.1 会话 239
9.5.2 临时节点 240
9.5.3 顺序节点 240
9.5.4 事务操作 241
9.5.5 版本号 241
9.5.6 监视 242
9.6 ZooKeeper的应用场景 243
9.6.1 Master选举 244
9.6.2 分布式锁 245
习题 246
实验 ZooKeeper的3种访问方式 246
第10章 Ambari 249
10.1 Ambari简介 249
10.1.1 背景 249
10.1.2 Ambari的主要功能 250
10.2 Ambari的安装 250
10.2.1 安装前准备 250
10.2.2 安装Ambari 254
10.3 利用Ambari管理Hadoop集群 257
10.3.1 安装与配置HDP集群 258
10.3.2 节点的扩展 264
10.3.3 启用HA 267
10.4 Ambari的架构和工作原理 271
10.4.1 Ambari的总体架构 271
10.4.2 Ambari Agent 272
10.4.3 Ambari Server 272
习题 273
第11章 Mahout 274
11.1 Mahout简介 274
11.1.1 什么是Mahout 274
11.1.2 Mahout能做什么 275
11.2 Taste简介 276
11.2.1 DataModel 276
11.2.2 Similarity 277
11.2.3 UserNeighborhood 277
11.2.4 Recommender 277
11.2.5 RecommenderEvaluator 277
11.2.6 RecommenderIRStatsEvaluator 278
11.3 使用Taste构建推荐系统 278
11.3.1 创建Maven项目 278
11.3.2 导入Mahout依赖 278
11.3.3 获取电影评分数据 278
11.3.4 编写基于用户的推荐 279
11.3.5 编写基于物品的推荐 280
11.3.6 评价推荐模型 281
11.3.7 获取推荐的查准率和查全率 281
习题 282
实验 基于Mahout的电影推荐系统 283
综合实验 搜狗日志查询分析(MapReduce+Hive综合实验) 284
参考文献 287