本书以实战开发为原则,以Hadoop 3.X生态系统内的主要大数据工具整合应用及项目开发为主线,通过Hadoop大数据开发中常见的11个典型模块和3个完整项目案例,详细介绍HDFS、MapReduce、HBase、Hive、Sqoop、Spark等主流大数据工具的整合使用。本书附带资源包括本书核心内容的教学视频,本书所涉及的源代码、参考资料等。
全书共14章,分为3篇,涵盖的主要内容有Hadoop及其生态组件伪分布式安装和完全分布式安装、分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、分布式数据仓库Hive、数据转换工具Sqoop、内存计算框架Spark、海量Web日志分析系统、电商商品推荐系统、分布式垃圾消息识别系统等。
本书内容丰富、案例典型、实用性强,适合各个层次希望学习大数据开发技术的人员阅读,尤其适合有一定Java 基础而要进行Hadoop应用开发的人员阅读。
1.版本新。本书采用Hadoop3,版本较新,帮助读者学习前沿技术。
2.项目大。深度剖析日志分析、推荐系统、垃圾消息三大企业级项目实战案例。读者稍加改造,即可在生产环境中使用。
3.内容全。详细介绍HDFS、MapReduce、HBase、Hive、Sqoop、Spark 等主流大数据工具。
4.资源多。赠送12小时视频讲解和全书配套范例源码。
5.在线答疑。本书提供答疑球球群,在线答疑。群号:243363382。
吴章勇,现任中软国际分公司技术总监,曾任阿里巴巴集团架构师,持有信息系统项目管理师高级证书;为培训公司策划大数据课程体系,主持开发过多个大数据项目,有15年以上开发和培训经验;录制过《Hadoop大数据技术》等经典在线教育视频课程。
杨强,现任中软国际项目总监,中软国际ETC CTO办公室高级技术顾问,移动增值数据服务项目经理,拥有10年大型软件项目开发及培训经验,对分布式及异构系统集成
有深入研究。参与主持多个大型项目并发表多篇重要论文。
目 录
第一篇 Hadoop技术 1
第1章 大数据与Hadoop概述 03
1.1 大数据概述 03
1.1.1 大数据的定义 03
1.1.2 大数据行业的发展 04
1.1.3 大数据的典型应用 04
1.2 Hadoop概述 06
1.2.1 Hadoop简介 06
1.2.2 Hadoop生态子项目 07
1.2.3 Hadoop 3.X的新特性 09
1.3 小结 09
1.4 配套视频 10
第2章 Hadoop伪分布式安装 11
2.1 Hadoop伪分布式安装前的准备 11
2.1.1 安装VMware 11
2.1.2 安装CentOS 7 12
2.1.3 配置CentOS 7:接受协议 15
2.1.4 配置CentOS 7:登录系统 16
2.1.5 配置CentOS 7:设置IP 16
2.1.6 配置CentOS 7:修改主机名 17
2.1.7 配置CentOS 7:配置hosts文件 18
2.1.8 配置CentOS 7:关闭防火墙 18
2.1.9 配置CentOS 7:禁用selinux 19
2.1.10 配置CentOS 7:设置SSH免密码登录 19
2.1.11 配置CentOS 7:重启 20
2.2 Hadoop伪分布式安装 21
2.2.1 安装WinSCP 21
2.2.2 安装PieTTY 22
2.2.3 安装JDK 23
2.2.4 安装Hadoop 24
2.3 Hadoop验证 28
2.3.1 格式化 28
2.3.2 启动Hadoop 29
2.3.3 查看Hadoop相关进程 29
2.3.4 浏览文件 30
2.3.5 浏览器访问 30
2.4 小结 31
2.5 配套视频 31
第3章 Hadoop分布式文件系统——HDFS 32
3.1 HDFS原理 32
3.1.1 HDFS的假设前提和设计目标 32
3.1.2 HDFS的组件 33
3.1.3 HDFS数据复制 36
3.1.4 HDFS健壮性 36
3.1.5 HDFS数据组织 38
3.2 HDFS Shell 39
3.2.1 Hadoop文件操作命令 39
3.2.2 Hadoop系统管理命令 44
3.3 HDFS Java API 46
3.3.1 搭建Linux下Eclipse开发环境 46
3.3.2 为Eclipse安装Hadoop插件 47
3.3.3 HDFS Java API示例 49
3.4 小结 56
3.5 配套视频 56
第4章 分布式计算框架MapReduce 57
4.1 MapReduce原理 57
4.1.1 MapReduce概述 57
4.1.2 MapReduce的主要功能 59
4.1.3 MapReduce的处理流程 59
4.2 MapReduce编程基础 61
4.2.1 内置数据类型介绍 61
4.2.2 WordCount入门示例 63
4.2.3 MapReduce分区与自定义数据类型 67
4.3 MapReduce综合实例——数据去重 71
4.3.1 实例描述 71
4.3.2 设计思路 72
4.3.3 程序代码 73
4.3.4 运行结果 74
4.4 MapReduce综合实例——数据排序 75
4.4.1 实例描述 75
4.4.2 设计思路 76
4.4.3 程序代码 77
4.4.4 运行结果 79
4.5 MapReduce综合实例——求学生平均成绩 79
4.5.1 实例描述 79
4.5.2 设计思路 80
4.5.3 程序代码 81
4.5.4 运行结果 83
4.6 MapReduce综合实例——WordCount高级示例 84
4.7 小结 87
4.8 配套视频 87
第二篇 Hadoop 生态系统的主要大数据工具整合应用 89
第5章 NoSQL数据库HBase 91
5.1 HBase原理 91
5.1.1 HBase概述 91
5.1.2 HBase核心概念 92
5.1.3 HBase的关键流程 95
5.2 HBase伪分布式安装 97
5.2.1 安装HBase的前提条件 98
5.2.2 解压并配置环境变量 98
5.2.3 配置HBase参数 99
5.2.4 验证HBase 100
5.3 HBase Shell 103
5.3.1 HBase Shell常用命令 103
5.3.2 HBase Shell综合示例 109
5.3.3 HBase Shell的全部命令 112
5.4 小结 114
5.5 配套视频 114
第6章 HBase高级特性 115
6.1 HBase Java API 115
6.1.1 HBase Java API介绍 115
6.1.2 HBase Java API示例 120
6.2 HBase与MapReduce的整合 130
6.2.1 HBase与MapReduce的整合概述 130
6.2.2 HBase与MapReduce的整合示例 130
6.3 小结 134
6.4 配套视频 134
第7章 分布式数据仓库Hive 135
7.1 Hive概述 135
7.1.1 Hive的定义 135
7.1.2 Hive的设计特征 136
7.1.3 Hive的体系结构 136
7.2 Hive伪分布式安装 137
7.2.1 安装Hive的前提条件 137
7.2.2 解压并配置环境变量 138
7.2.3 安装MySQL 139
7.2.4 配置Hive 143
7.2.5 验证Hive 145
7.3 Hive QL的基础功能 146
7.3.1 操作数据库 146
7.3.2 创建表 147
7.3.3 数据准备 150
7.4 Hive QL的高级功能 153
7.4.1 select查询 154
7.4.2 函数 154
7.4.3 统计函数 154
7.4.4 distinct去除重复值 155
7.4.5 limit限制返回记录的条数 156
7.4.6 为列名取别名 156
7.4.7 case when then多路分支 156
7.4.8 like模糊查询 157
7.4.9 group by分组统计 157
7.4.10 having过滤分组统计结果 157
7.4.11 inner join内联接 158
7.4.12 left outer join和right outer join外联接 159
7.4.13 full outer join外部联接 159
7.4.14 order by排序 160
7.4.15 where查找 160
7.5 小结 161
7.6 配套视频 162
第8章 Hive高级特性 163
8.1 Beeline 163
8.1.1 使用Beeline的前提条件 163
8.1.2 Beeline的基本操作 164
8.1.3 Beeline的参数选项与管理命令 166
8.2 Hive JDBC 167
8.2.1 运行Hive JDBC的前提条件 167
8.2.2 Hive JDBC基础示例 167
8.2.3 Hive JDBC综合示例 169
8.3 Hive函数 174
8.3.1 内置函数 174
8.3.2 自定义函数 175
8.4 Hive表的高级特性 181
8.4.1 外部表 181
8.4.2 分区表 182
8.5 小结 185
8.6 配套视频 185
第9章 数据转换工具Sqoop 186
9.1 Sqoop概述与安装 186
9.1.1 Sqoop概述 186
9.1.2 Sqoop安装 187
9.2 Sqoop导入数据 189
9.2.1 更改MySQL的root用户密码 189
9.2.2 准备数据 190
9.2.3 导入数据到HDFS 191
9.2.4 查看HDFS数据 192
9.2.5 导入数据到Hive 193
9.2.6 查看Hive数据 193
9.3 Sqoop导出数据 194
9.3.1 准备MySQL表 194
9.3.2 导出数据到MySQL 194
9.3.3 查看MySQL中的导出数据 195
9.4 深入理解Sqoop的导入与导出 196
9.5 小结 203
9.6 配套视频 203
第10章 内存计算框架Spark 204
10.1 Spark入门 204
10.1.1 Spark概述 204
10.1.2 Spark伪分布式安装 205
10.1.3 由Java到Scala 209
10.1.4 Spark的应用 212
10.1.5 Spark入门示例 217
10.2 Spark Streaming 220
10.2.1 Spark Streaming概述 220
10.2.2 Spark Streaming示例 221
10.3 Spark SQL 224
10.3.1 Spark SQL概述 224
10.3.2 spark-sql命令 225
10.3.3 使用Scala操作Spark SQL 227
10.4 小结 228
10.5 配套视频 229
第11章 Hadoop及其常用组件集群安装 230
11.1 Hadoop集群安装 230
11.1.1 安装并配置CentOS 230
11.1.2 安装JDK 236
11.1.3 安装Hadoop 237
11.1.4 远程复制文件 241
11.1.5 验证Hadoop 242
11.2 HBase集群安装 244
11.2.1 解压并配置环境变量 244
11.2.2 配置HBase参数 245
11.2.3 远程复制文件 246
11.2.4 验证HBase 247
11.3 Hive集群安装 249
11.3.1 解压并配置环境变量 249
11.3.2 安装MySQL 250
11.3.3 配置Hive 252
11.3.4 验证Hive 254
11.4 Spark集群安装 254
11.4.1 安装Scala 254
11.4.2 安装Spark 254
11.4.3 配置Spark 255
11.4.4 远程复制文件 256
11.4.5 验证Spark 257
11.5 小结 259
11.6 配套视频 259
第三篇 实战篇 261
第12章 海量Web日志分析系统 263
12.1 案例介绍 263
12.1.1 分析Web日志数据的目的 263
12.1.2 Web日志分析的典型应用场景 265
12.1.3 日志的不确定性 265
12.2 案例分析 266
12.2.1 日志分析的KPI 267
12.2.2 案例系统结构 267
12.2.3 日志分析方法 268
12.3 案例实现 273
12.3.1 定义日志相关属性字段 273
12.3.2 数据合法标识(在分析时是否被过滤) 274
12.3.3 解析日志 274
12.3.4 日志合法性过滤 275
12.3.5 页面访问量统计的实现 276
12.3.6 页面独立IP访问量统计的实现 278
12.3.7 用户单位时间PV的统计实现 280
12.3.8 用户访问设备信息统计的实现 282
12.4 小结 283
12.5 配套视频 283
第13章 电商商品推荐系统 284
13.1 案例介绍 284
13.1.1 推荐算法 284
13.1.2 案例的意义 285
13.1.3 案例需求 285
13.2 案例设计 286
13.2.1 协同过滤 286
13.2.2 基于用户的协同过滤算法 289
13.2.3 基于物品的协同过滤算法 292
13.2.4 算法实现设计 295
13.2.5 推荐步骤与架构设计 298
13.3 案例实现 298
13.3.1 实现HDFS文件操作工具 299
13.3.2 实现任务步骤1:汇总用户对所有物品的评分信息 302
13.3.3 实现任务步骤2:获取物品同现矩阵 305
13.3.4 实现任务步骤3:合并同现矩阵和评分矩阵 307
13.3.5 实现任务步骤4:计算推荐结果 310
13.3.6 实现统一的任务调度 316
13.4 小结 317
13.5 配套视频 317
第14章 分布式垃圾消息识别系统 318
14.1 案例介绍 318
14.1.1 案例内容 318
14.1.2 案例应用的主体结构 319
14.1.3 案例运行结果 321
14.2 RPC远程方法调用的设计 322
14.2.1 Java EE的核心优势:RMI 322
14.2.2 RMI的基本原理 324
14.2.3 自定义RPC组件分析 325
14.3 数据分析设计 328
14.3.1 垃圾消息识别算法——朴素贝叶斯算法 328
14.3.2 进行分布式贝叶斯分类学习时的全局计数器 330
14.3.3 数据清洗分析结果存储 332
14.4 案例实现 333
14.4.1 自定义的RPC组件服务端相关实现 333
14.4.2 自定义的RPC组件客户端相关实现 342
14.4.3 业务服务器实现 347
14.4.4 业务客户端实现 367
14.5 小结 370
14.6 配套视频 370