第一篇 大数据基础 2
第1章 大数据概述 2
1.1 大数据时代 2
1.1.1 第三次信息化浪潮 2
1.1.2 信息科技为大数据时代提供技术支撑 3
1.1.3 数据产生方式的变革促成大数据时代的来临 5
1.1.4 大数据的发展历程 6
1.2 大数据的概念 7
1.2.1 数据量大 7
1.2.2 数据类型繁多 8
1.2.3 处理速度快 9
1.2.4 价值密度低 9
1.3 大数据的影响 9
1.3.1 大数据对科学研究的影响 10
1.3.2 大数据对思维方式的影响 11
1.3.3 大数据对社会发展的影响 11
1.3.4 大数据对就业市场的影响 12
1.3.5 大数据对人才培养的影响 13
1.4 大数据的应用 14
1.5 大数据关键技术 14
1.6 大数据计算模式 15
1.6.1 批处理计算 16
1.6.2 流计算 16
1.6.3 图计算 16
1.6.4 查询分析计算 17
1.7 大数据产业 17
1.8 大数据与云计算、物联网 18
1.8.1 云计算 18
1.8.2 物联网 21
1.8.3 大数据与云计算、物联网的关系 25
1.9 本章小结 26
1.10 习题 26
第2章 大数据处理架构Hadoop 28
2.1 概述 28
2.1.1 Hadoop简介 28
2.1.2 Hadoop的发展简史 28
2.1.3 Hadoop的特性 29
2.1.4 Hadoop的应用现状 29
2.1.5 Hadoop的版本 30
2.2 Hadoop生态系统 30
2.2.1 HDFS 31
2.2.2 HBase 31
2.2.3 MapReduce 31
2.2.4 Hive 32
2.2.5 Pig 32
2.2.6 Mahout 32
2.2.7 Zookeeper 32
2.2.8 Flume 32
2.2.9 Sqoop 32
2.2.10 Ambari 33
2.3 Hadoop的安装与使用 33
2.3.1 创建Hadoop用户 33
2.3.2 Java的安装 34
2.3.3 SSH登录权限设置 34
2.3.4 安装单机Hadoop 34
2.3.5 Hadoop伪分布式安装 35
2.4 本章小结 37
2.5 习题 38
实验1 安装Hadoop 38
第二篇 大数据存储与管理 42
第3章 分布式文件系统HDFS 42
3.1 分布式文件系统 42
3.1.1 计算机集群结构 42
3.1.2 分布式文件系统的结构 43
3.1.3 分布式文件系统的设计需求 44
3.2 HDFS简介 44
3.3 HDFS的相关概念 45
3.3.1 块 45
3.3.2 名称节点和数据节点 46
3.3.3 第二名称节点 47
3.4 HDFS体系结构 48
3.4.1 概述 48
3.4.2 HDFS命名空间管理 49
3.4.3 通信协议 49
3.4.4 客户端 50
3.4.5 HDFS体系结构的局限性 50
3.5 HDFS的存储原理 50
3.5.1 数据的冗余存储 50
3.5.2 数据存取策略 51
3.5.3 数据错误与恢复 52
3.6 HDFS的数据读写过程 53
3.6.1 读数据的过程 53
3.6.2 写数据的过程 54
3.7 HDFS编程实践 55
3.7.1 HDFS常用命令 55
3.7.2 HDFS的Web界面 56
3.7.3 HDFS常用Java API及应用实例 57
3.8 本章小结 60
3.9 习题 61
实验2 熟悉常用的HDFS操作 61
第4章 分布式数据库HBase 63
4.1 概述 63
4.1.1 从BigTable说起 63
4.1.2 HBase简介 63
4.1.3 HBase与传统关系数据库的对比分析 64
4.2 HBase访问接口 65
4.3 HBase数据模型 66
4.3.1 数据模型概述 66
4.3.2 数据模型的相关概念 66
4.3.3 数据坐标 67
4.3.4 概念视图 68
4.3.5 物理视图 69
4.3.6 面向列的存储 69
4.4 HBase的实现原理 71
4.4.1 HBase的功能组件 71
4.4.2 表和Region 71
4.4.3 Region的定位 72
4.5 HBase运行机制 74
4.5.1 HBase系统架构 74
4.5.2 Region服务器的工作原理 76
4.5.3 Store的工作原理 77
4.5.4 HLog的工作原理 77
4.6 HBase编程实践 78
4.6.1 HBase常用的Shell命令 78
4.6.2 HBase常用的Java API及应用实例 80
4.7 本章小结 90
4.8 习题 90
实验3 熟悉常用的HBase操作 91
第5章 NoSQL数据库 94
5.1 NoSQL简介 94
5.2 NoSQL兴起的原因 95
5.2.1 关系数据库无法满足Web 2.0的需求 95
5.2.2 关系数据库的关键特性在Web 2.0时代成为“鸡肋” 96
5.3 NoSQL与关系数据库的比较 97
5.4 NoSQL的四大类型 98
5.4.1 键值数据库 99
5.4.2 列族数据库 100
5.4.3 文档数据库 100
5.4.4 图数据库 101
5.5 NoSQL的三大基石 101
5.5.1 CAP 101
5.5.2 BASE 103
5.5.3 最终一致性 104
5.6 从NoSQL到NewSQL数据库 105
5.7 本章小结 107
5.8 习题 107
第6章 云数据库 108
6.1 云数据库概述 108
6.1.1 云计算是云数据库兴起的基础 108
6.1.2 云数据库的概念 109
6.1.3 云数据库的特性 110
6.1.4 云数据库是个性化数据存储需求的理想选择 111
6.1.5 云数据库与其他数据库的关系 112
6.2 云数据库产品 113
6.2.1 云数据库厂商概述 113
6.2.2 Amazon的云数据库产品 113
6.2.3 Google的云数据库产品 114
6.2.4 微软的云数据库产品 114
6.2.5 其他云数据库产品 115
6.3 云数据库系统架构 115
6.3.1 UMP系统概述 115
6.3.2 UMP系统架构 116
6.3.3 UMP系统功能 118
6.4 云数据库实践 121
6.4.1 阿里云RDS简介 121
6.4.2 RDS中的概念 121
6.4.3 购买和使用RDS数据库 122
6.4.4 将本地数据库迁移到云端RDS数据库 126
6.5 本章小结 127
6.6 习题 127
实验4 熟练使用RDS for MySQL数据库 128
第三篇 大数据处理与分析 132
第7章 MapReduce 132
7.1 概述 132
7.1.1 分布式并行编程 132
7.1.2 MapReduce模型简介 133
7.1.3 Map和Reduce函数 133
7.2 MapReduce的工作流程 134
7.2.1 工作流程概述 134
7.2.2 MapReduce的各个执行阶段 135
7.2.3 Shuffle过程详解 136
7.3 实例分析:WordCount 139
7.3.1 WordCount的程序任务 139
7.3.2 WordCount的设计思路 139
7.3.3 WordCount的具体执行过程 140
7.3.4 一个WordCount执行过程的实例 141
7.4 MapReduce的具体应用 142
7.4.1 MapReduce在关系代数运算中的应用 142
7.4.2 分组与聚合运算 144
7.4.3 矩阵-向量乘法 144
7.4.4 矩阵乘法 144
7.5 MapReduce编程实践 145
7.5.1 任务要求 145
7.5.2 编写Map处理逻辑 146
7.5.3 编写Reduce处理逻辑 147
7.5.4 编写main方法 147
7.5.5 编译打包代码以及运行程序 148
7.6 本章小结 150
7.7 习题 151
实验5 MapReduce编程初级实践 152
第8章 Hadoop再探讨 155
8.1 Hadoop的优化与发展 155
8.1.1 Hadoop的局限与不足 155
8.1.2 针对Hadoop的改进与提升 156
8.2 HDFS2.0的新特性 156
8.2.1 HDFS HA 157
8.2.2 HDFS联邦 158
8.3 新一代资源管理调度框架YARN 159
8.3.1 MapReduce1.0的缺陷 159
8.3.2 YARN设计思路 160
8.3.3 YARN体系结构 161
8.3.4 YARN工作流程 163
8.3.5 YARN框架与MapReduce1.0框架的对比分析 164
8.3.6 YARN的发展目标 165
8.4 Hadoop生态系统中具有代表性的功能组件 166
8.4.1 Pig 166
8.4.2 Tez 167
8.4.3 Kafka 169
8.5 本章小结 170
8.6 习题 170
第9章 Spark 172
9.1 概述 172
9.1.1 Spark简介 172
9.1.2 Scala简介 173
9.1.3 Spark与Hadoop的对比 174
9.2 Spark生态系统 175
9.3 Spark运行架构 177
9.3.1 基本概念 177
9.3.2 架构设计 177
9.3.3 Spark运行基本流程 178
9.3.4 RDD的设计与运行原理 179
9.4 Spark的部署和应用方式 184
9.4.1 Spark三种部署方式 184
9.4.2 从“Hadoop+Storm”架构转向Spark架构 185
9.4.3 Hadoop和Spark的统一部署 186
9.5 Spark编程实践 186
9.5.1 启动Spark Shell 187
9.5.2 Spark RDD基本操作 187
9.5.3 Spark应用程序 189
9.6 本章小结 192
9.7 习题 193
第10章 流计算 194
10.1 流计算概述 194
10.1.1 静态数据和流数据 194
10.1.2 批量计算和实时计算 195
10.1.3 流计算的概念 196
10.1.4 流计算与Hadoop 196
10.1.5 流计算框架 197
10.2 流计算的处理流程 197
10.2.1 概述 197
10.2.2 数据实时采集 198
10.2.3 数据实时计算 198
10.2.4 实时查询服务 199
10.3 流计算的应用 199
10.3.1 应用场景1:实时分析 199
10.3.2 应用场景2:实时交通 200
10.4 开源流计算框架Storm 200
10.4.1 Storm简介 201
10.4.2 Storm的特点 201
10.4.3 Storm的设计思想 202
10.4.4 Storm的框架设计 203
10.4.5 Storm实例 204
10.5 Spark Streaming 206
10.5.1 Spark Streaming设计 206
10.5.2 Spark Streaming与Storm的对比 207
10.6 本章小结 208
10.7 习题 208
第11章 图计算 210
11.1 图计算简介 210
11.1.1 传统图计算解决方案的不足之处 210
11.1.2 图计算通用软件 211
11.2 Pregel简介 211
11.3 Pregel图计算模型 212
11.3.1 有向图和顶点 212
11.3.2 顶点之间的消息传递 212
11.3.3 Pregel的计算过程 213
11.3.4 实例 214
11.4 Pregel的C++API 216
11.4.1 消息传递机制 217
11.4.2 Combiner 217
11.4.3 Aggregator 218
11.4.4 拓扑改变 218
11.4.5 输入和输出 218
11.5 Pregel的体系结构 219
11.5.1 Pregel的执行过程 219
11.5.2 容错性 220
11.5.3 Worker 221
11.5.4 Master 221
11.5.5 Aggregator 222
11.6 Pregel的应用实例 222
11.6.1 单源最短路径 222
11.6.2 二分匹配 223
11.7 Pregel和MapReduce实现PageRank算法的对比 224
11.7.1 PageRank算法 224
11.7.2 PageRank算法在Pregel中的实现 225
11.7.3 PageRank算法在MapReduce中的实现 225
11.7.4 PageRank算法在Pregel和MapReduce中实现的比较 228
11.8 本章小结 228
11.9 习题 228
第12章 数据可视化 230
12.1 可视化概述 230
12.1.1 什么是数据可视化 230
12.1.2 可视化的发展历程 230
12.1.3 可视化的重要作用 231
12.2 可视化工具 233
12.2.1 入门级工具 233
12.2.2 信息图表工具 234
12.2.3 地图工具 235
12.2.4 时间线工具 236
12.2.5 高级分析工具 236
12.3 可视化典型案例 237
12.3.1 全球黑客活动 237
12.3.2 互联网地图 237
12.3.3 编程语言之间的影响力关系图 238
12.3.4 百度迁徙 239
12.3.5 世界国家健康与财富之间的关系 239
12.3.6 3D可视化互联网地图APP 239
12.4 本章小结 240
12.5 习题 240
第四篇 大数据应用 242
第13章 大数据在互联网领域的应用 242
13.1 推荐系统概述 242
13.1.1 什么是推荐系统 242
13.1.2 长尾理论 243
13.1.3 推荐方法 243
13.1.4 推荐系统模型 244
13.1.5 推荐系统的应用 244
13.2 协同过滤 245
13.2.1 基于用户的协同过滤 245
13.2.2 基于物品的协同过滤 246
13.2.3 UserCF算法和ItemCF算法的对比 248
13.3 协同过滤实践 248
13.3.1 实践背景 248
13.3.2 数据处理 249
13.3.3 计算相似度矩阵 249
13.3.4 计算推荐结果 250
13.3.5 展示推荐结果 250
13.4 本章小结 251
13.5 习题 251
第14章 大数据在生物医学领域的应用 252
14.1 流行病预测 252
14.1.1 传统流行病预测机制的不足 252
14.1.2 基于大数据的流行病预测 253
14.1.3 基于大数据的流行病预测的重要作用 253
14.1.4 案例:百度疾病预测 254
14.2 智慧医疗 255
14.3 生物信息学 256
14.4 案例:基于大数据的综合健康服务平台 257
14.4.1 平台概述 257
14.4.2 平台业务架构 258
14.4.3 平台技术架构 258
14.4.4 平台关键技术 259
14.5 本章小结 260
14.6 习题 261
第15章 大数据的其他应用 262
15.1 大数据在物流领域中的应用 262
15.1.1 智能物流的概念 262
15.1.2 智能物流的作用 263
15.1.3 智能物流的应用 263
15.1.4 大数据是智能物流的关键 263
15.1.5 中国智能物流骨干网——菜鸟 264
15.2 大数据在城市管理中的应用 266
15.2.1 智能交通 266
15.2.2 环保监测 267
15.2.3 城市规划 268
15.2.4 安防领域 269
15.3 大数据在金融行业中的应用 269
15.3.1 高频交易 269
15.3.2 市场情绪分析 269
15.3.3 信贷风险分析 270
15.4 大数据在汽车行业中的应用 271
15.5 大数据在零售行业中的应用 272
15.5.1 发现关联购买行为 272
15.5.2 客户群体细分 273
15.5.3 供应链管理 273
15.6 大数据在餐饮行业中的应用 274
15.6.1 餐饮行业拥抱大数据 274
15.6.2 餐饮O2O 274
15.7 大数据在电信行业中的应用 276
15.8 大数据在能源行业中的应用 276
15.9 大数据在体育和娱乐领域中的应用 277
15.9.1 训练球队 277
15.9.2 投拍影视作品 278
15.9.3 预测比赛结果 279
15.10 大数据在安全领域中的应用 280
15.10.1 大数据与国家安全 280
15.10.2 应用大数据技术防御网络攻击 280
15.10.3 警察应用大数据工具预防犯罪 281
15.11 大数据在政府领域中的应用 282
15.12 大数据在日常生活中的应用 283
15.13 本章小结 284
15.14 习题 284
参考文献 285