第1章 大数据技术概述 1
1.1 大数据技术的发展背景 1
1.1.1 大数据技术的发展过程 2
1.1.2 大数据技术的影响 3
1.1.3 大数据发展的重大事件 5
1.2 大数据的概念、特征及意义 7
1.2.1 什么是大数据 7
1.2.2 大数据的特征 8
1.2.3 大数据来自哪儿 9
1.2.4 大数据的挑战 10
1.2.5 研究大数据的意义 12
1.3 大数据的存储与计算模式 13
1.3.1 大数据的存储模式 13
1.3.2 大数据的计算模式 16
1.4 大数据的典型应用 18
1.4.1 智慧医疗的应用 19
1.4.2 智慧农业的应用 20
1.4.3 金融行业的应用 21
1.4.4 零售行业的应用 24
1.4.5 电子商务行业的应用 24
1.4.6 电子政务的应用 24
1.5 初识Hadoop大数据平台 26
1.5.1 Hadoop的发展过程 26
1.5.2 Hadoop的优势 27
1.5.3 Hadoop的生态系统 28
1.5.4 Hadoop的版本 29
1.6 习题 32
第2章 Hadoop平台的安装与配置 33
2.1 安装准备 33
2.1.1 硬件要求 33
2.1.2 安装Linux 34
2.1.3 安装Java 36
2.2 Hadoop的集群安装 38
2.2.1 Hadoop的运行模式 38
2.2.2 Linux系统设置 39
2.2.3 SSH的安装 41
2.2.4 Hadoop的安装 42
2.2.5 Hadoop的配置 42
2.2.6 Hadoop的测试 49
2.3 Hadoop开发平台的安装 51
2.3.1 Eclipse的安装 51
2.3.2 下载hadoop-eclipse-plugin插件 53
2.3.3 在Eclipse中配置Hadoop 53
2.4 习题 55
2.5 实训 55
第3章 Hadoop分布式文件系统 57
3.1 HDFS概述 57
3.1.1 HDFS简介 57
3.1.2 HDFS的基本概念 58
3.1.3 HDFS的特点 59
3.2 HDFS的体系结构 61
3.2.1 HDFS设计目标 61
3.2.2 HDFS的结构模型 61
3.2.3 HDFS文件的读写 63
3.2.4 HDFS的数据组织机制 63
3.2.5 HDFS的高可用性机制 66
3.3 HDFS Shell操作 68
3.3.1 Shell命令介绍 68
3.3.2 HDFS Shell帮助 68
3.3.3 文件操作命令 69
3.3.4 跨文件系统的交互操作命令 73
3.3.5 权限管理操作 74
3.4 习题 76
3.5 实训 77
第4章 HDFS API编程 78
4.1 HDFS API概述 78
4.1.1 HDFS API简介 78
4.1.2 HDFS Java API的一般用法 82
4.2 HDFS Java API客户端编程 85
4.2.1 目录与文件的创建 85
4.2.2 文件上传与下载 87
4.2.3 数据流与文件读写操作 89
4.2.4 目录与文件的重命名 93
4.2.5 目录和文件的删除 94
4.2.6 文件系统的状态信息显示 95
4.3 HDFS应用举例——云盘系统的实现 99
4.3.1 云盘系统分析 99
4.3.2 云盘系统设计 99
4.3.3 云盘系统实现 100
4.4 习题 104
4.5 实训 104
第5章 Hadoop分布式计算框架 106
5.1 MapReduce概述 106
5.1.1 为什么需要MapReduce 106
5.1.2 MapReduce的优势 110
5.1.3 MapReduce的基本概念 111
5.1.4 MapReduce框架 112
5.1.5 MapReduce发展 114
5.2 YARN运行机制 118
5.2.1 YARN组成结构 118
5.2.2 YARN通信协议 120
5.2.3 YARN工作流程 121
5.3 数据的混洗处理 123
5.3.1 map端 124
5.3.2 reduce端 125
5.4 作业的调度 125
5.4.1 FIFO调度器 126
5.4.2 Capacity调度器 126
5.4.3 Fair调度器 127
5.4.4 调度器的比较 128
5.5 任务的执行 129
5.5.1 推测执行 129
5.5.2 JVM重用 130
5.5.3 跳过坏记录 130
5.6 失败处理机制 130
5.6.1 任务运行失败 130
5.6.2 ApplicationMaster运行失败 131
5.6.3 NodeManager运行失败 131
5.6.4 ResourceManager运行失败 132
5.6.5 日志文件 133
5.7 MapReduce示例演示——WordCount 133
5.8 习题 136
第6章 MapReduce API编程 137
6.1 MapReduce API概述 137
6.1.1 MapReduce API简介 137
6.1.2 MapReduce API编程思路 140
6.2 MapReduce的数据类型 146
6.2.1 序列化 146
6.2.2 Writable接口 146
6.2.3 Writable类 148
6.3 MapReduce的输入 153
6.3.1 输入分片 153
6.3.2 文件输入 154
6.3.3 文本输入 156
6.3.4 二进制输入 157
6.3.5 多个输入 158
6.3.6 数据库输入 159
6.4 MapReduce的输出 159
6.4.1 文本输出 160
6.4.2 二进制输出 160
6.4.3 多个输出 160
6.4.4 延迟输出 161
6.4.5 数据库输出 161
6.5 MapReduce的任务 161
6.5.1 map任务 162
6.5.2 combine任务 163
6.5.3 partition任务 164
6.5.4 reduce任务 164
6.5.5 任务的配置与执行 165
6.6 MapReduce应用举例——倒排索引 168
6.6.1 功能介绍 168
6.6.2 准备数据 169
6.6.3 分析与设计 170
6.6.4 MapReduce编码实现 171
6.6.5 测试结果 173
6.7 习题 174
6.8 实训 175
第7章 MapReduce 高级编程 177
7.1 自定义数据类型 177
7.2 自定义输入 输出 183
7.2.1 RecordReader与RecordWriter 183
7.2.2 自定义输入 188
7.2.3 自定义输出 192
7.3 自定义Combiner Partitioner 194
7.3.1 自定义Combiner 194
7.3.2 自定义Partitioner 197
7.4 组合式计算作业 200
7.4.1 迭代式计算 200
7.4.2 依赖关系组合式计算 201
7.4.3 链式计算 202
7.5 MapReduce的特性 203
7.5.1 计数器 203
7.5.2 连接 210
7.6 MapReduce应用举例——成绩分析
系统的实现 215
7.6.1 成绩分析系统解析 215
7.6.2 成绩分析系统功能设计 216
7.6.3 成绩分析系统实现 216
7.7 习题 225
7.8 实训 225
第8章 Spark概述 226
8.1 环境搭建 226
8.1.1 Scala的下载和安装 227
8.1.2 Spark的下载与安装 228
8.2 Spark简介 231
8.2.1 Spark的发展 231
8.2.2 Spark的特点 232
8.2.3 Spark与Hadoop的关系 233
8.2.4 Spark的企业应用 234
8.3 Spark大数据技术框架 235
8.3.1 Spark技术体系 235
8.3.2 四大组件概述 237
8.4 Spark 2.0 使用体验 238
8.4.1 Spark入口 238
8.4.2 第一个Spark程序 239
8.5 Spark的数据模型 242
8.5.1 RDD介绍 242
8.5.2 RDD的处理过程 243
8.5.3 Transformation算子与使用 243
8.5.4 Action算子与使用 251
8.5.5 RDD分区 253
8.5.6 RDD的依赖关系 253
8.5.7 RDD的容错支持 254
8.6 Spark任务调度 255
8.6.1 Spark应用程序部署 255
8.6.2 Spark任务的调度机制 255
8.7 习题 256
8.8 实训 257
第9章 Spark Streaming编程 258
9.1 Spark Streaming介绍 258
9.2 Spark Streaming工作机制 259
9.3 Spark的DStream流 262
9.3.1 DStream转换 262
9.3.2 Window操作 263
9.3.3 DStream输出 264
9.3.4 持久化与序列化 265
9.3.5 设置检测点 266
9.4 Spark Streaming案例 267
9.5 集群处理与性能 270
9.6 习题 272
9.7 实训 272
第10章 Spark SQL编程 273
10.1 Spark SQL概述 273
10.2 DataFrame 275
10.2.1 DataSet与DataFrame 275
10.2.2 反射机制获取RDD内
的Schema 276
10.2.3 编程接口指定Schema 277
10.3 数据源 278
10.3.1 一般load save方法 278
10.3.2 Parquet数据集 279
10.3.3 JSON数据集 280
10.3.4 JDBC数据集 281
10.3.5 DataFrame的案例 282
10.4 Spark Streaming与Spark SQL
综合案例 285
10.5 习题 290
10.6 实训 291
参考文献 292