内容介绍
本书以实战开发为原则,以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应用开发的人员阅读。
目录
- 第 一篇 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