第1篇 初始云计算 3
第1章 云计算介绍 3
1.1云计算相关概念 3
1.1.1云计算的定义 4
1.1.2云计算的服务方式 6
1.1.3云计算的部署模式 8
1.2云计算的历史 9
1.2.1虚拟化技术的发展 9
1.2.2分布式计算技术的发展 10
1.2.3软件应用模式的发展 13
1.3云计算的现状 14
1.3.1产业界现状 14
1.3.2学术界现状 19
1.3.3政府机构现状 25
1.4本章小结 28
第2章 云计算技术基础 29
2.1 HDFS相关技术 29
2.1.1 RPC 29
2.1.2基于Socket的Java网络编程 30
2.2 MapReduce相关技术 31
2.2.1 Java反射机制 31
2.2.2序列化和反序列化 33
2.3 HBase相关技术 34
2.3.1 NoSQL 34
2.3.2 ACID 36
2.3.3 CAP理论 36
2.3.4一致性模型 37
2.4 ZooKeeper相关技术 38
2.4.1 Paxos算法介绍 38
2.4.2 Java NIO库 38
2.5本章小结 39
第3章 云计算开发环境搭建 40
3.1集群环境介绍 40
3.2 Hadoop环境搭建 41
3.2.1 Hadoop简介 41
3.2.2安装前准备 41
3.2.3安装环境搭建 42
3.2.4详细安装步骤 42
3.3 Hadoop集群配置 49
3.3.1配置Hadoop守护进程的运行环境 49
3.3.2配置Hadoop守护进程的运行参数 50
3.4 HBase环境搭建 51
3.4.1 HBase简介 51
3.4.2 HBase的数据模型 51
3.4.3 HBase安装前的准备 52
3.4.4 HBase的安装配置 52
3.4.5 HBase的运行 55
3.5 ZooKeeper环境搭建 57
3.5.1 ZooKeeper简介 57
3.5.2安装前的准备 58
3.5.3独立服务器的安装与配置 59
3.5.4集群服务器的安装与配置 60
3.6本章小结 62
第2篇 浅出云计算 65
第4章 应用实例:图像百科系统 65
4.1应用背景 65
4.2需求分析 66
4.2.1功能需求 66
4.2.2非功能需求 69
4.3核心业务处理流程 70
4.3.1查询百科条目处理流程 70
4.3.2编辑百科条目处理流程 72
4.3.3更新百科条目处理流程 74
4.4总体设计 75
4.5本章小结 78
第5章 使用HDFS存储海量图像数据 79
5.1 HDFS介绍 79
5.1.1 HDFS架构 79
5.1.2 HDFS的特点 80
5.1.3 HDFS存取机制简介 81
5.2 HDFS接口介绍 83
5.3图像百科系统中的图像存储 87
5.3.1图像存储基本思想 87
5.3.2图像存储设计目标 88
5.3.3图像存储体系结构 88
5.3.4图像百科系统的功能结构 89
5.4系统实现 90
5.4.1存储模块类交互图 90
5.4.2核心类详细介绍 92
5.4.3 HDFS存储小文件 97
5.5本章小结 98
第6章 使用MapReduce处理图像 99
6.1分布式数据处理MapReduce 99
6.1.1 MapReduce简介 99
6.1.2编程模型 100
6.1.3执行概括 101
6.2使用MapReduce编程模型 102
6.2.1 MapReduce程序模板 102
6.2.2 MapReduce编程思想 107
6.3更新图像百科条目的MapReduce设计 107
6.3.1设计目标 107
6.3.2更新条目的体系结构 109
6.3.3更新条目的逻辑流程 110
6.4 MapReduce对更新条目的实现 112
6.4.1更新条目的核心类 112
6.4.2 MapReduce核心类实现 113
6.4.3编译运行 118
6.5本章小结 121
第7章 使用HBase存储百科数据 122
7.1 HBase的基本特征 122
7.1.1 RDBMS与HBase 122
7.1.2面向列的NoSQL数据库 123
7.1.3 HBase数据库架构 126
7.1.4 HBase的特点 128
7.2使用HBase编程 129
7.2.1 HBase的Java API 129
7.2.2 HBase客户端编程 130
7.2.3 HBase编程示例 150
7.3 Fotospedia系统的数据库设计 153
7.3.1数据库模块总体设计 154
7.3.2数据库模块详细设计 154
7.3.3数据库模块交互设计 158
7.4 Fotospedia系统的数据库实现 160
7.4.1数据库模块类交互图 160
7.4.2数据库模块核心类实现 161
7.5本章小结 167
第8章 使用ZooKeeper管理集群 168
8.1 ZooKeeper详细介绍 168
8.2 ZooKeeper的使用方法及API介绍 172
8.2.1 ZooKeeper的使用方法 172
8.2.2基本类和接口 173
8.2.3常用类与方法的实例介绍 173
8.3图像百科系统集群管理详细设计 179
8.3.1集群管理 179
8.3.2配置管理 181
8.4图像百科系统集群管理实现 182
8.4.1集群管理实现 182
8.4.2配置管理实现 188
8.4.3测试 194
8.5本章小结 197
第3篇 深入云计算 201
第9章 深入分析H D FS 201
9.1 HDFS核心设计机制 201
9.1.1 Namenode和Datanode 201
9.1.2数据副本策略 201
9.1.3数据组织 204
9.1.4健壮性 204
9.1.5存储空间回收 205
9.2 HDFS源码总体介绍 206
9.3核心代码分析 208
9.3.1 HDFS的通信协议 208
9.3.2 HDFS读文件源码分析 214
9.3.3 HDFS写文件源码分析 219
9.4 Hadoop支持的其他文件系统 222
9.4.1 KFS文件系统体系架构 223
9.4.2 KFS各模块关键技术 224
9.4.3 HDFS与KFS写数据的区别 225
9.5本章小结 227
第10章 深入分析MapReduce 228
10.1 MapReduce框架结构 228
10.1.1 MapReduce中的角色 228
10.1.2 MapReduce流程 230
10.2代码静态分析 233
10.2.1创建Job的相关类 233
10.2.2初始化Job的相关类 234
10.2.3作业调度相关类 234
10.2.4执行MapTask的相关类 235
10.3代码详细分析 236
10.3.1 JobClient提交Job 236
10.3.2 JobTracker初始化作业 237
10.3.3 TaskTracker启动 240
10.3.4 JobTracker调度作业 242
10.3.5 TaskTracker加载Task 245
10.3.6子进程执行MapTask 247
10.3.7子进程执行ReduceTask 251
10.4本章小结 254
第11章深入分析HBase 255
11.1 HBase体系与原理 255
11.1.1 HBase的集群架构 255
11.1.2 HBase的系统架构 258
11.1.3 HBase的存储架构 259
11.2 HBase总体结构 264
11.2.1总体包图 265
11.2.2常用类分析 266
11.3 HBase关键剖析 269
11.3.1集群启动与关闭 269
11.3.2 HBase配置过程 279
11.3.3读取图像百科数据 282
11.3.4写入图像百科数据 289
11.4本章小结 294
第12章 深入分析ZooKeeper 295
12.1概述 295
12.1.1 ZooKeeper角色 295
12.1.2 ZooKeeper工作原理 295
12.2代码静态分析 297
12.2.1包概述 297
12.2.2核心类浅析 298
12.3代码情景分析 302
12.3.1服务器的启动 302
12.3.2 Leader服务器 311
12.3.3 Follower服务器 318
12.3.4客户端服务请求 320
12.4本章小结 325
第4篇应用云计算 329
第13章 应用Pig实现并行数据处理 329
13.1 Apache Pig简介 329
13.2 Pig的安装与配置 330
13.2.1Pig安装准备 330
13.2.2安装配置过程 331
13.2.3运行模式 331
13.3深入分析Pig 335
13.3.1 Pig数据模型 335
13.3.2 Pig常用命令和数据读写操作 337
13.3.3 Pig诊断操作 338
13.3.4 Pig关系操作 339
13.3.5 Pig表达式和函数 340
13.3.6 Pig用户自定义函数(UDF) 342
13.3.7探索逻辑执行计划 346
13.4 Pig实例分析 347
13.4.1 Pig Latin示例 347
13.4.2简单实例解析 348
13.4.3深入使用Pig 352
13.5 Pig与SQL比较 355
13.6本章小结 356
第14章 应用Hive构建数据处理平台 357
14.1 Hive简介 357
14.1.1 Hive架构 357
14.1.2 Hive和Hadoop关系 358
14.1.3 Hive和传统数据库进行比较 359
14.1.4 Hive的数据存储 360
14.1.5 Hive元数据Metastore 361
14.2 Hive安装配置 363
14.2.1安装前准备 363
14.2.2安装Hive 363
14.2.3安装MySQL与Hive配置 365
14.3 Hive使用与操作 369
14.3.1 Hive基本操作 369
14.3.2查询数据Hive Select 375
14.3.3 Hive函数 380
14.4实例介绍 384
14.5本章小结 389
第15章 应用Mahout实现机器学习算法 390
15.1 Mahout概述 390
15.1.1 Mahout简介 390
15.1.2机器学习简介 390
15.2 Mahout安装配置 392
15.2.1安装前准备 392
15.2.2 Mahout安装 393
15.3 Mahout使用简介 394
15.3.1使用Mahout实现集群 395
15.3.2使用Mahout实现分类 406
15.3.3使用Mahout实现决策树 408
15.3.4使用Mahout实现推荐挖掘 409
15.4本章小结 411
第16章 应用HAMA实现分布式计算 412
16.1 HAMA简介 412
16.1.1 HAMA系统架构 412
16.1.2 BSPMaster 413
16.1.3 GroomServer 414
16.1.4 ZooKeeper 414
16.2 HAMA BSP介绍 415
16.2.1 BSP并行计算 416
16.2.2创建自定义的BSP 417
16.2.3用户接口 418
16.3 HAMA安装配置 421
16.3.1安装前准备 421
16.3.2安装和环境配置 421
16.3.3 HAMA运行模式 423
16.3.4运行HAMA 425
16.3.5 HAMA Web接口 426
16.3.6在Eclipse中创建HAMA工程 427
16.4实例介绍 429
16.4.1打印“Hello BSP” 429
16.4.2估算PI值 430
16.5本章小结 432
附录 433