第1章 绪论 1
1.1 摩尔定律 1
1.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 云计算能带来什么 14
1.5 如何尽快学好云计算 15
1.6 思考题 16
第2章 云计算初探 17
2.1 云计算的定义和基本特征 17
2.2 云计算的发展动因和沿革 19
2.2.1 计算模式的演变 20
2.2.2 互联网基础设施的演变 21
2.2.3 数据管理的演变 22
2.2.4 应用软件形态的演变 24
2.2.5 人机交互方式的演变 25
2.3 云基础设施体系架构与核心技术 27
2.4 搭建和使用云基础设施所要解决的核心问题 29
2.5 小结 31
2.6 思考题 31
第3章 如何实现连网设备的优化利用与弹性伸缩 32
3.1 引言 32
3.2 虚拟化 33
3.2.1 虚拟化的定义 34
3.2.2 虚拟化的历史沿革与分类 35
3.3 服务器虚拟化 36
3.3.1 核心概念 36
3.3.2 关键特性 37
3.3.3 面临的问题 38
3.4 服务器虚拟化关键技术 39
3.4.1 服务器虚拟化的实施过程 39
3.4.2 动态资源优化 41
3.4.3 虚拟机迁移 42
3.5 虚拟化资源环境建设与管理 43
3.5.1 虚拟化资源管理平台体系架构 44
3.5.2 虚拟化资源管理平台模块功能 45
3.5.3 虚拟化资源管理平台管理流程 47
3.6 小结 48
3.7 思考题 49
第4章 如何实现大规模数据的弹性存储 50
4.1 引言 50
4.2 弹性存储的核心问题 51
4.2.1 命名空间 52
4.2.2 元数据管理 54
4.2.3 故障和错误处理 55
4.2.4 性能和效率 61
4.3 HDFS 62
4.3.1 HDFS的目标和基本假设条件 62
4.3.2 HDFS体系架构 63
4.3.3 性能保障 65
4.3.4 访问接口 68
4.4 HDFS的管理与应用 69
4.4.1 基于命令行的管理与应用 69
4.4.2 基于Java API的管理与应用 73
4.5 应用实例:视频文件管理系统 76
4.5.1 需求分析 76
4.5.2 系统设计 77
4.5.3 系统实现 78
4.6 小结 82
4.7 思考题 82
第5章 如何实现海量多元数据的高效管理 83
5.1 引言 83
5.2 NoSQL数据库 84
5.2.1 NoSQL数据库设计原理 84
5.2.2 NoSQL数据库数据模型 86
5.2.3 NoSQL数据库的数据划分技术 90
5.2.4 NoSQL数据库及其分类 94
5.2.5 NoSQL数据库的优势和劣势 95
5.3 HBase数据库系统 99
5.3.1 数据模型 99
5.3.2 系统架构 100
5.3.3 HBase访问接口 105
5.4 HBase的管理与应用 106
5.4.1 基于命令行的管理与应用 106
5.4.2 基于Java API的管理与应用 111
5.5 应用实例:交通监控图片管理 116
5.5.1 需求分析 116
5.5.2 系统设计 116
5.5.3 系统实现 117
5.6 小结 122
5.7 思考题 122
第6章 如何实现大规模数据的并行分析与处理 123
6.1 引言 123
6.2 MapReduce的由来和原理 124
6.2.1 一个朴素的单词计数程序 124
6.2.2 多线程并行化单词计数程序 124
6.2.3 使用分块存储的单词计数程序 125
6.2.4 在多台计算机上并行运行的单词计数程序 126
6.2.5 MapReduce的提出 127
6.2.6 MapReduce的设计思想 129
6.3 MapReduce的开源实现——Hadoop 131
6.3.1 Hadoop运行环境 131
6.3.2 Hadoop工作流程 132
6.3.3 Hadoop作业运行机制 133
6.4 Hadoop中的数据类型和格式 140
6.4.1 文件输入 141
6.4.2 其他输入格式 143
6.4.3 输出格式 143
6.5 Hadoop编程案例 143
6.5.1 单词计数程序例子回顾 143
6.5.2 数据去重 146
6.5.3 数据排序 149
6.6 小结 153
6.7 思考题 153
第7章 如何利用云中的各类资源 154
7.1 引言 154
7.2 服务计算基础 155
7.2.1 服务的基本概念 155
7.2.2 SOA基本原理 156
7.2.3 Web服务的两种基本形态 157
7.3 云服务与一切皆服务的交付模式 160
7.3.1 云服务的定义和分类 160
7.3.2 XaaS与一切皆服务的交付模式 162
7.3.3 云服务案例 163
7.4 服务开发实践 165
7.4.1 Java与Web服务开发 165
7.4.2 SOAP服务开发实践 166
7.4.3 REST服务开发实践 170
7.5 小结 172
7.6 思考题 172
第8章 如何进行云应用开发 173
8.1 引言 173
8.2 面向多租户的云应用设计 174
8.2.1 多租户与应用交付模式 174
8.2.2 多租户应用的设计要求 175
8.2.3 多租户应用的实现方法 176
8.2.4 业界现状 177
8.3 基于服务组合的云应用开发方法 178
8.3.1 面向IT开发人员的服务组合 178
8.3.2 面向最终用户的服务组合 187
8.4 云应用的部署 198
8.5 小结 201
8.6 思考题 202
第9章 如何保证安全 203
9.1 引言 203
9.2 云基础设施安全 204
9.2.1 网络硬件安全 204
9.2.2 主机系统安全 206
9.2.3 安全管理 209
9.3 云数据安全 211
9.3.1 数据存储安全 212
9.3.2 数据访问安全 213
9.3.3 数据管理安全 214
9.4 云应用安全 215
9.4.1 用户认证 215
9.4.2 应用授权 216
9.5 云安全标准和法律法规 219
9.6 小结 221
9.7 思考题 221
第10章 综合实践:交通流量监控 222
10.1 引言 222
10.2 需求分析 222
10.3 基础环境搭建 224
10.4 数据准备 228
10.5 数据统计和索引 233
10.6 查询接口封装 236
10.7 应用界面开发 238
10.8 云应用开发总结 239
10.9 思考题 241
附录A OpenStack的安装与配置 242
A.1 总体规划 242
A.2 操作系统准备 243
A.3 安装OpenStack组件 244
A.4 Keystone的配置、运行与测试 247
A.5 Glance的配置、运行与测试 249
A.6 Nova的配置、运行与测试 251
A.7 horizon的配置、运行与测试 255
A.8 安装与配置计算节点 257
附录B Hadoop的安装与配置 261
B.1 环境准备 261
B.2 配置在单节点(伪分布式)环境下运行Hadoop 262
B.3 在多节点(分布式)环境下运行Hadoop 266
B.4 运行wordcount词频统计程序 269
附录C HBase的安装与配置 272
C.1 单机版 272
C.2 伪分布模式 273
C.3 完全分布模式 274
参考文献 277