本书从初学者的角度详细介绍大数据的核心技术。全书共11章,包括绪论、Linux的基础操作、Hadoop大数据处理架构、HDFS分布式文件系统、MapReduce分布式计算框架、ZooKeeper分布式协调服务、YARN资源管理器、HBase分布式数据库、Hive数据仓储、PySpark数据处理与分析及综合案例。此外,本书还提供了相应的示例代码,以帮助读者进一步理解相关方案的实现过程。
吴慧欣,男,博士、教授,主要从事系统建模与仿真、机器学习、虚拟现实技术研究,担任河南省大数据专家委员会委员,河南省研究生教育指导委员会委员,河南省一流本科专业软件工程负责人,主持完成省部级以上科研、教改项目9项,获省部级科技奖励2项,国家发明专利7项,发表学术论文32篇,SCI/EI收录15篇。
目 录
第1章 绪论 1
1.1 大数据的形成和发展 1
1.2 大数据的基本概念 3
1.2.1 什么是大数据 3
1.2.2 大数据的特征 3
1.3 大数据关键技术 5
1.3.1 大数据采集技术 5
1.3.2 大数据预处理技术 6
1.3.3 大数据存储与管理技术 7
1.3.4 大数据分析与挖掘技术 8
1.3.5 大数据展现与应用技术 10
1.4 大数据的行业应用 11
1.4.1 水利领域 11
1.4.2 生物医学领域 13
1.4.3 智慧城市领域 14
1.4.4 商业领域 15
1.4.5 信息安全领域 15
1.5 大数据领域的主要职位及其能力要求 16
1.5.1 首席数据官 16
1.5.2 数据科学家 17
1.5.3 大数据开发工程师 17
1.5.4 大数据运维工程师 18
1.6 本章小结 18
1.7 习题 18
第2章 Linux的基础操作 19
2.1 Linux概述 19
2.1.1 Linux系统的发行版本及特点 19
2.1.2 Linux与Windows系统对比 19
2.2 Linux命令 20
2.2.1 命令行技巧 20
2.2.2 Linux帮助命令 22
2.2.3 Linux文件类型及查看操作 24
2.2.4 文件与目录操作 27
2.2.5 文本编辑 34
2.2.6 文本过滤器与处理 39
2.2.7 用户与用户组管理 43
2.2.8 文件权限管理 49
2.2.9 归档与压缩 53
2.2.10 进程管理 56
2.3 本章小结 57
2.4 习题 57
第3章 Hadoop大数据处理架构 59
3.1 Hadoop简介 59
3.1.1 Hadoop的概念 59
3.1.2 Hadoop的发展史 59
3.1.3 Hadoop版本介绍 61
3.2 Hadoop的特性 61
3.3 Hadoop生态系统 62
3.3.1 Hadoop集群的架构 62
3.3.2 Hadoop生态系统的组件 62
3.4 部署Hadoop集群 64
3.4.1 Hadoop集群的部署方式 64
3.4.2 虚拟机的创建和配置 64
3.4.3 安装JDK 91
3.4.4 安装Hadoop 92
3.4.5 验证 98
3.5 本章小节 104
3.6 习题 104
第4章 HDFS分布式文件系统 105
4.1 HDFS简介 105
4.1.1 分布式文件系统的发展 105
4.1.2 HDFS的基本概念 107
4.1.3 HDFS的特点 108
4.2 HDFS的存储架构和工作原理 109
4.2.1 HDFS的存储架构 109
4.2.2 HDFS文件的读取原理 110
4.2.3 HDFS文件的写入原理 111
4.3 HDFS的Shell操作 112
4.4 HDFS的Java API介绍 114
4.4.1 HDFS Java API概述 114
4.4.2 使用Java API操作HDFS 114
4.5 本章小结 123
4.6 习题 123
第5章 MapReduce分布式计算框架 124
5.1 MapReduce简介 124
5.1.1 分布式并行编程 124
5.1.2 MapReduce模型简介 125
5.1.3 MapReduce的优/缺点 125
5.1.4 Map和Reduce函数 126
5.2 MapReduce的工作原理 127
5.2.1 工作原理概述 127
5.2.2 MapReduce的工作过程 127
5.2.3 Map任务的工作原理 129
5.2.4 Shuffle的工作原理 130
5.2.5 Reduce任务的工作原理 133
5.3 MapReduce编程组件 134
5.3.1 InputFormat组件 135
5.3.2 Mapper组件 139
5.3.3 Reducer组件 140
5.3.4 Partitioner组件 140
5.3.5 Combiner组件 141
5.3.6 OutputFormat组件 142
5.4 MapReduce案例 142
5.4.1 本地测试环境配置 143
5.4.2 WordCount 144
5.4.3 倒排索引 146
5.4.4 数据去重 154
5.4.5 Top-N 157
5.5 MapReduce实验 160
5.5.1 任务要求 161
5.5.2 环境准备 161
5.5.3 程序编写 162
5.5.4 本地测试 165
5.5.5 集群测试 166
5.6 本章小结 167
5.7 习题 168
第6章 ZooKeeper分布式协调服务 170
6.1 ZooKeeper概述 170
6.1.1 ZooKeeper的设计目标 170
6.1.2 ZooKeeper的特性 171
6.1.3 ZooKeeper集群角色 172
6.1.4 ZooKeeper实现 173
6.2 ZooKeeper数据模型 174
6.2.1 数据存储结构 174
6.2.2 节点类型 175
6.2.3 znode属性 176
6.2.4 znode数据访问 176
6.2.5 其他节点 176
6.2.6 ZooKeeper中的时间 177
6.3 watch机制 178
6.3.1 watch机制的定义 178
6.3.2 watch机制的语义 178
6.3.3 watch机制的实现 179
6.3.4 watch机制的特点 179
6.3.5 watch机制的通知状态和事件类型 180
6.3.6 ZooKeeper对watch的支持 180
6.4 ZooKeeper的选举机制 180
6.4.1 选举机制相关概念 180
6.4.2 选举机制类型 181
6.5 ZooKeeper会话 182
6.6 ZooKeeper使用ACL进行访问控制 185
6.6.1 ACL权限与内置方案 185
6.6.2 ZooKeeper C API 186
6.7 可插拔ZooKeeper身份验证 187
6.8 ZooKeeper绑定 189
6.8.1 Java绑定 189
6.8.2 C绑定 191
6.9 ZooKeeper部署及操作 191
6.9.1 ZooKeeper的下载与安装 192
6.9.2 配置修改 192
6.9.3 ZooKeeper操作 194
6.9.4 ZooKeeper集群部署 195
6.9.5 ZooKeeper的Java API操作 203
6.10 ZooKeeper典型应用 209
6.10.1 数据发布与订阅 209
6.10.2 负载均衡 209
6.10.3 命名服务 210
6.10.4 分布式锁 210
6.11 本章小结 211
6.12 习题 211
第7章 YARN资源管理器 213
7.1 YARN介绍 213
7.1.1 YARN的概念 213
7.1.2 YARN的应用场景 213
7.2 YARN的基本组成 214
7.2.1 ResourceManager 215
7.2.2 NodeManager 215
7.2.3 ApplicationMaster 216
7.3 YARN的工作流程 216
7.4 YARN的调度器 217
7.4.1 先进先出调度器 218
7.4.2 容量调度器 218
7.4.3 公平调度器 221
7.5 YARN的常用命令 227
7.5.1 查看任务 227
7.5.2 查看日志 228
7.5.3 查看尝试运行任务 228
7.5.4 查看容器 229
7.5.5 查看节点状态 229
7.5.6 更新配置 229
7.5.7 查看队列 230
7.6 本章小结 230
7.7 习题 230
第8章 HBase分布式数据库 232
8.1 HBase简介 232
8.2 HBase的基本组成结构 232
8.2.1 表 233
8.2.2 行 233
8.2.3 列簇 233
8.2.4 列限定符 233
8.2.5 单元格 233
8.3 HBase数据模型 234
8.4 HBase的系统架构 235
8.5 HBase的安装部署 237
8.6 HBase的Shell操作 241
8.6.1 基本命令 241
8.6.2 命名空间操作 242
8.6.3 常用DDL操作 243
8.6.4 常用DML操作 247
8.7 HBase的Java API介绍 251
8.7.1 环境配置 251
8.7.2 Java API操作 252
8.8 本章小结 255
8.9 习题 255
第9章 Hive数据仓储 256
9.1 Hive简介 256
9.1.1 Hive的体系结构 256
9.1.2 Hive的工作流程 257
9.2 Hive的安装与配置 258
9.2.1 Hive的安装 258
9.2.2 Hive的配置 260
9.3 Hive数据操作 261
9.3.1 Hive的数据类型 261
9.3.2 DDL操作 263
9.3.3 DML操作 267
9.3.4 Hive SQL操作 270
9.4 实验 274
9.4.1 例1:MovieLens用户评分 274
9.4.2 例2:Apache网络日志数据 276
9.5 本章小结 276
9.6 习题 277
第10章 PySpark数据处理与分析 278
10.1 Spark概述 278
10.1.1 基本概念 279
10.1.2 Spark的基本组成与架构 280
10.1.3 Spark编程模型 282
10.1.4 Spark集群架构 283
10.2 PySpark简介 285
10.3 PySpark的部署和操作 285
10.3.1 PySpark部署 285
10.3.2 快速启动DataFrame 287
10.4 Spark Pandas API 299
10.4.1 快速入门 299
10.4.2 常用的操作运算 305
10.4.3 PySpark使用方法的详细讲解 307
10.5 实验 332
10.5.1 DataFrame数据操作 333
10.5.2 Spark Pandas API的操作 334
10.6 本章小结 335
10.7 习题 335
第11章 综合案例 337
11.1 实验准备 337
11.2 实验环境 337
11.3 实验目的 337
11.4 数据预处理 338
11.5 数据入库 339
11.5.1 启动Hadoop环境 339
11.5.2 数据导入HBase 340
11.6 构建索引表 341
11.6.1 创建Jingdong工程 342
11.6.2 导入相关jar包 343
11.6.3 创建ItemsInfo实体类 346
11.6.4 编写创建HBase索引表的代码 348
11.6.5 将程序打包成jar包 356
11.6.6 运行环境配置 361
11.6.7 运行程序 363
11.7 构建搜索引擎 363
11.7.1 创建Java Web工程 364
11.7.2 导入相关jar包 366
11.7.3 部署Tomcat到IntelliJ IDEA中 367
11.7.4 创建相关类 370
11.7.5 创建前端页面DataSearch.jsp 378
11.7.6 加载hbase-site.xml配置文件 382
11.8 页面访问 385
11.9 本章小结 386
参考文献 387