第一部分 大数据概述及基础 3
第1章 大数据概念和发展背景 3
1.1 什么是大数据 3
1.2 大数据的特点 3
1.3 大数据的发展 4
1.4 大数据的应用 5
1.5 习题 6
第2章 大数据系统架构概述 7
2.1 总体架构概述 7
2.1.1 总体架构设计原则 7
2.1.2 总体架构参考模型 9
2.2 运行架构概述 11
2.2.1 物理架构 11
2.2.2 集成架构 11
2.2.3 安全架构 12
2.3 阿里云飞天系统体系架构 13
2.3.1 阿里云飞天整体架构 13
2.3.2 阿里云飞天平台内核 15
2.3.3 阿里云飞天开放服务 15
2.3.4 阿里云飞天的特色 17
2.4 主流大数据系统厂商 18
2.4.1 阿里云数加平台 18
2.4.2 Cloudera 19
2.4.3 Hortonworks 20
2.4.4 Amazon 20
2.4.5 Google 21
2.4.6 微软 21
2.5 习题 22
第3章 分布式通信与协同 23
3.1 数据编码传输 23
3.1.1 数据编码概述 23
3.1.2 LZSS算法 24
3.1.3 Snappy压缩库 25
3.2 分布式通信系统 26
3.2.1 远程过程调用 26
3.2.2 消息队列 27
3.2.3 应用层多播通信 27
3.2.4 阿里云夸父RPC系统 28
3.2.5 Hadoop IPC的应用 29
3.3 分布式协同系统 30
3.3.1 Chubby锁服务 30
3.3.2 ZooKeeper 32
3.3.3 阿里云女娲协同系统 33
3.3.4 ZooKeeper在HDFS高可用方案中的使用 33
3.4 习题 35
第4章 大数据存储 36
4.1 大数据存储技术的发展 37
4.2 海量数据存储的关键技术 38
4.2.1 数据分片与路由 38
4.2.2 数据复制与一致性 43
4.3 重要数据结构和算法 44
4.3.1 Bloom Filter 44
4.3.2 LSM Tree 46
4.3.3 Merkle Tree 47
4.3.4 Cuckoo Hash 49
4.4 分布式文件系统 49
4.4.1 文件存储格式 49
4.4.2 GFS 52
4.4.3 HDFS 54
4.4.4 阿里云盘古 55
4.5 分布式数据库NoSQL 56
4.5.1 NoSQL数据库概述 56
4.5.2 KV数据库 57
4.5.3 列式数据库 58
4.5.4 图数据库 60
4.5.5 文档数据库 62
4.6 阿里云数据库 63
4.6.1 云数据库Redis 63
4.6.2 云数据库RDS 66
4.6.3 云数据库Memcache 68
4.7 大数据存储技术的趋势 72
4.8 习题 72
第二部分 大数据处理 75
第5章 分布式处理 75
5.1 CPU多核和POSIX Thread 75
5.2 MFI并行计算框架 76
5.3 Hadoop MapReduce 77
5.4 Spark 78
5.5 数据处理技术的发展 79
5.6 习题 80
第6章 Hadoop MapReduce解析 81
6.1 Hadoop MapReduce架构 81
6.2 Hadoop MapReduce与高效能计算、网格计算的区别 83
6.3 MapReduce工作机制 83
6.3.1 Map 84
6.3.2 Reduce 85
6.3.3 Combine 85
6.3.4 Shuffle 85
6.3.5 Speculative Task 86
6.3.6 任务容错 87
6.4 应用案例 88
6.4.1 WordCount 88
6.4.2 WordMean 91
6.4.3 Grep 93
6.5 MapReduce的缺陷与不足 95
6.6 习题 95
第7章 Spark解析 96
7.1 Spark RDD 96
7.2 Spark与MapReduce的对比 97
7.3 Spark的工作机制 98
7.3.1 DAG工作图 98
7.3.2 Partition 99
7.3.3 Lineage容错方法 100
7.3.4 内存管理 100
7.3.5 数据持久化 102
7.4 数据的读取 102
7.4.1 HDFS 102
7.4.2 Amazon S3 102
7.4.3 HBase 103
7.5 应用案例 103
7.5.1 日志挖掘 103
7.5.2 判别西瓜好坏 104
7.6 Spark的发展趋势 107
7.7 习题 107
第8章 流计算 108
8.1 流计算概述 108
8.2 流计算与批处理系统的对比 109
8.3 Storm流计算系统 109
8.4 Samza流计算系统 112
8.5 阿里云流计算 113
8.6 集群日志文件的实时分析 115
8.7 流计算的发展趋势 119
8.8 习题 120
第9章 图计算 121
9.1 图计算概述 121
9.2 图计算与流计算、批处理的对比 123
9.3 Spark GraphX 124
9.4 Pregel 126
9.5 航班机场状态分析 127
9.6 图计算的发展趋势 128
9.7 习题 129
第10章 阿里云大数据计算服务平台 130
10.1 MaxCompute概述 130
10.2 MR计算 131
10.3 SQL计算 138
10.4 Graph计算 140
10.5 习题 144
第11章 集群资源管理与调度 145
11.1 集群资源统一管理系统 146
11.1.1 集群资源管理概述 146
11.1.2 Apache YARN 147
11.1.3 Apache Mesos 152
11.1.4 Google Omega 153
11.2 资源管理模型 154
11.2.1 基于slot的资源表示模型 154
11.2.2 基于最大最小公平原则的资源分配模型 154
11.3 资源调度策略 155
11.3.1 调度策略概述 155
11.3.2 Capacity Scheduler调度 156
11.3.3 Fair Scheduler调度 158
11.4 在YARN上运行计算框架 160
11.4.1 MapReduce on YARN 160
11.4.2 Spark on YARN 161
11.4.3 YARN程序设计 162
11.5 阿里云伏羲调度系统 168
11.5.1 伏羲调度系统架构 168
11.5.2 5K挑战 169
11.5.3 伏羲优化实践 170
11.6 习题 171
第三部分 大数据分析与应用 175
第12章 数据分析 175
12.1 数据操作与绘图 175
12.1.1 数据结构 175
12.1.2 绘图功能 176
12.2 初级数据分析 177
12.2.1 描述性统计分析 178
12.2.2 回归诊断 178
12.3 交互式数据分析 179
12.3.1 交互式数据分析的特征 179
12.3.2 交互式数据处理的典型应用 179
12.3.3 典型的处理系统 180
12.4 数据仓库与分析 181
12.4.1 数据仓库的基本架构 182
12.4.2 数据仓库的实现步骤 182
12.4.3 分布式数据仓库Hive 184
12.4.4 数据仓库之SQL分析 186
12.4.5 阿里云MaxCompute数据仓库案例 187
12.5 习题 192
第13章 数据挖掘与机器学习技术 193
13.1 相关理论基础知识 193
13.1.1 数据挖掘与机器学习简介 193
13.1.2 关联分析 194
13.1.3 分类与回归 197
13.1.4 聚类分析 200
13.1.5 离群点检测 201
13.1.6 复杂数据类型的挖掘 202
13.2 应用实践 203
13.2.1 广告点击率预测 203
13.2.2 并行随机梯度下降 203
13.2.3 自然语言处理:文档相似性的计算 204
13.2.4 阿里云PAI与ET 205
13.3 深度学习 207
13.3.1 深度学习简介 207
13.3.2 DistBelief 208
13.3.3 TensorFlow 209
13.4 数据挖掘与机器学习的发展趋势 212
13.5 习题 212
第14章 大数据实践:基于数加平台的推荐系统 213
14.1 数据集简介 213
14.2 数据探索 214
14.3 方案设计 216
14.4 训练集构造 216
14.4.1 MapReduce环境配置 216
14.4.2 MapReduce代码编写 217
14.4.3 特征提取与标签提取 222
14.4.4 训练集采样 224
14.4.5 缺失值填充 225
14.5 模型训练与预测 225
14.6 模型预测的准确性评测 229
14.7 特征重要性的评估 230
14.8 总结 231
参考文献 232