第1章Hadoop简介 1
1.1什么是Hadoop 2
1.1.1 Hadoop概述 2
1.1.2 Hadoop的历史 2
1.1.3 Hadoop的功能与作用 2
1.1.4 Hadoop的优势 3
1.1.5 Hadoop的应用现状和发展趋势 3
1.2 Hadoop项目及其结构 3
1.3 Hadoop的体系结构 6
1.3.1 HDFS的体系结构 6
1.3.2 MapReduce的体系结构 7
1.4 Hadoop与分布式开发 7
1.5 Hadoop计算模型——MapReduce 10
1.6 Hadoop的数据管理 10
1.6.1 HDFS的数据管理 11
1.6.2 HBase的数据管理 12
1.6.3 Hive的数据管理 15
1.7小结 17
第2章Hadoop的安装与配置 18
2.1在Linux上安装与配置Hadoop 19
2.1.1安装JDK 1.6 19
2.1.2配置SSH免密码登录 20
2.1.3安装并运行Hadoop 21
2.2在Windows上安装与配置Hadoop 23
2.2.1安装Cygwin 24
2.2.2配置环境变量 24
2.2.3安装和启动sshd服务 24
2.2.4配置SSH免密码登录 24
2.3安装和配置Hadoop集群 25
2.3.1 网络拓扑 25
2.3.2定义集群拓扑 25
2.3.3建立和安装Cluster 26
2.4日志分析及几个小技巧 32
2.5小结 33
第3章 Hadoop应用案例分析 35
3.1 Hadoop在Yahoo!的应用 36
3.2 Hadoop在eBay的应用 38
3.3 Hadoop在百度的应用 40
3.4 Hadoop在Facebook的应用 43
3.5 Hadoop平台上的海量数据排序 46
3.6小结 53
第4章MapReduce计算模型 54
4.1为什么要用MapReduce 55
4.2 MapReduce计算模型 56
4.2.1 MapReduce Job 56
4.2.2 Hadoop中的Hello World程序 56
4.2.3 MapReduce的数据流和控制流 64
4.3 MapReduce任务的优化 65
4.4 Hadoop流 67
4.4.1 Hadoop流的工作原理 68
4.4.2 Hadoop流的命令 69
4.4.3实战案例:添加Bash程序和Python程序到Hadoop流中 70
4.5 Hadoop Pipes 72
4.6小结 74
第5章 开发MapReduce应用程序 75
5.1系统参数的配置 76
5.2配置开发环境 78
5.3编写MapReduce程序 79
5.3.1 Map处理 79
5.3.2 Reduce处理 80
5.4本地测试 81
5.5运行MapReduce程序 83
5.5.1打包 84
5.5.2在本地模式下运行 85
5.5.3在集群上运行 86
5.6网络用户界面 87
5.6.1JobTracker页面 87
5.6.2工作页面 88
5.6.3返回结果 90
5.6.4任务页面 93
5.6.5任务细节页面 93
5.7性能调优 94
5.8 MapReduce工作流 96
5.8.1将问题分解成MapReduce工作 97
5.8.2运行相互依赖的工作 97
5.9小结 98
第6章MapReduce应用案例 99
6.1单词计数 100
6.1.1实例描述 100
6.1.2设计思路 100
6.1.3程序代码 101
6.1.4代码解读 102
6.1.5程序执行 103
6.1.6代码结果 103
6.2数据去重 104
6.2.1实例描述 104
6.2.2设计思路 105
6.2.3程序代码 105
6.3排序 106
6.3.1实例描述 106
6.3.2设计思路 107
6.3.3程序代码 107
6.4单表关联 109
6.4.1实例描述 109
6.4.2设计思路 110
6.4.3程序代码 110
6.5多表关联 113
6.5.1实例描述 113
6.5.2设计思路 114
6.5.3程序代码 114
6.6小结 116
第7章MapReduce工作机制 117
7.1 MapReduce作业的执行流程 118
7.1.1 MapReduce任务的执行总流程 118
7.1.2提交作业 119
7.1.3初始化作业 121
7.1.4分配任务 123
7.1.5执行任务 125
7.1.6更新任务执行进度和状态 126
7.1.7完成作业 127
7.2错误处理机制 127
7.2.1硬件故障 127
7.2.2任务失败 128
7.3作业调度机制 128
7.4 shuffle和排序 129
7.4.1 map端 130
7.4.2 reduce端 131
7.4.3 shuffle过程的优化 132
7.5任务执行 133
7.5.1推测式执行 133
7.5.2任务JVM重用 134
7.5.3跳过坏记录 134
7.5.4任务执行环境 135
7.6小结 136
第8章Hadoop IO操作 137
8.1 IO操作中的数据检查 138
8.2数据的压缩 142
8.2.1 Hadoop对压缩工具的选择 142
8.2.2压缩分割和输入分割 143
8.2.3在MapReduce程序中使用压缩 143
8.3数据的IO中序列化操作 144
8.3.1 Writable类 144
8.3.2实现自己的Hadoop数据类型 152
8.4针对MapReduce的文件类 153
8.4.1 SequenceFile类 154
8.4.2 MapFile类 159
8.5小结 161
第9章HDFS详解 162
9.1 Hadoop的文件系统 163
9.2 HDFS简介 165
9.3 HDFS体系结构 166
9.3.1 HDFS的相关概念 166
9.3.2 HDFS的体系结构 167
9.4 HDFS的基本操作 169
9.4.1 HDFS的命令行操作 169
9.4.2 HDFS的Web界面 171
9.5 HDFS常用Java API详解 173
9.5.1使用Hadoop URL读取数据 173
9.5.2使用FileSystem API读取数据 174
9.5.3创建目录 176
9.5.4写数据 177
9.5.5删除数据 178
9.5.6文件系统查询 178
9.6 HDFS中的读写数据流 182
9.6.1文件的读取 182
9.6.2文件的写入 184
9.6.3一致性模型 185
9.7 HDFS命令详解 186
9.7.1通过distep进行并行复制 186
9.7.2 HDFS的平衡 187
9.7.3使用Hadoop归档文件 188
9.7.4其他命令 190
9.8小结 194
第10章Hadoop的管理 195
10.1 HDFS文件结构 196
10.2 Hadoop的状态监视和管理工具 200
10.2.1审计日志 200
10.2.2监控日志 200
10.2.3 Metrics 201
10.2.4 Java管理扩展 203
10.2.5 Ganglia 204
10.2.6 Hadoop管理命令 206
10.3 Hadoop集群的维护 210
10.3.1安全模式 210
10.3.2 Hadoop的备份 211
10.3.3 Hadoop的节点管理 212
10.3.4系统升级 214
10.4小结 216
第11章Hive详解 217
11.1 Hive简介 218
11.1.1 Hive的数据存储 218
11.1.2 Hive的元数据存储 220
11.2 Hive的基本操作 220
11.2.1在集群上安装Hive 220
11.2.2配置Hive 222
11.3 Hive QL详解 224
11.3.1数据定义(DDL)操作 224
11.3.2数据操作(DML) 231
11.3.3 SQL操作 233
11.3.4 Hive QL的使用实例 235
11.4 Hive的网络(WebUI)接口 237
11.5 Hive的JDBC接口 238
11.6 Hive的优化 241
11.7小结 243
第12章HBase详解 244
12.1 HBase简介 245
12.2 HBase的基本操作 245
12.2.1 HBase的安装 245
12.2.2运行HBase 249
12.2.3 HBase Shell 250
12.2.4 HBase配置 254
12.3 HBase体系结构 255
12.4 HBase数据模型 259
12.4.1数据模型 259
12.4.2概念视图 260
12.4.3物理视图 260
12.5 HBase与RDBMS 261
12.6 HBase与HDFS 262
12.7 HBase客户端 262
12.8 Java API 263
12.9 HBase编程实例之MapReduce 270
12.10模式设计 273
12.10.1学生表 273
12.10.2事件表 274
12.11小结 275
第13章Mahout详解 276
13.1 Mahout简介 277
13.2 Mahout的安装和配置 277
13.3 Mahout API简介 278
13.4 Mahout中的聚类和分类 280
13.4.1什么是聚类和分类 280
13.4.2 Mahout中的数据表示 281
13.4.3将文本转化成向量 282
13.4.4 Mahout中的聚类、分类算法 283
13.4.5算法应用实例 288
13.5 Mahout应用:建立一个推荐引擎 292
13.5.1推荐引擎简介 292
13.5.2使用Taste构建一个简单的推荐引擎 292
13.5.3简单分布式系统下基于产品的推荐系统简介 294
13.6小结 297
第14章Pig详解 299
14.1 Pig简介 300
14.2 Pig的安装和配置 300
14.2.1 Pig的安装条件 300
14.2.2 Pig的下载、安装和配置 301
14.2.3 Pig运行模式 301
14.3Pig Latin语言 304
14.3.1 Pig Latin语言简介 304
14.3.2 Pig Latin的使用 305
14.3.3 Pig Latin的数据类型 307
14.3.4 Pig Latin关键字 308
14.4用户定义函数 313
14.4.1编写用户定义函数 313
14.4.2使用用户定义函数 315
14.5 Pig实例 315
14.5.1 Local模式 316
14.5.2 MapReduce模式 318
14.6 Pig进阶 319
14.6.1数据实例 319
14.6.2 Pig数据分析 320
14.7小结 324
第15章ZooKeeper详解 326
15.1 ZooKeeper简介 327
15.1.1 ZooKeeper的设计目标 327
15.1.2数据模型和层次命名空间 328
15.1.3 ZooKeeper中的节点和临时节点 328
15.1.4 ZooKeeper的应用 329
15.2 ZooKeeper的安装和配置 329
15.2.1在集群上安装ZooKeeper 329
15.2.2配置ZooKeeper 334
15.2.3运行ZooKeeper 336
15.3 ZooKeeper的简单操作 339
15.3.1使用ZooKeeper命令的简单操作步骤 339
15.3.2 ZooKeeper API的简单使用 340
15.4 ZooKeeper的特性 343
15.4.1 ZooKeeper的数据模型 343
15.4.2 ZooKeeper会话及状态 345
15.4.3 ZooKeeper Watches 346
15.4.4 ZooKeeper ACL 346
15.4.5 ZooKeeper的一致性保证 347
15.5 ZooKeeper的Leader选举 348
15.6 ZooKeeper锁服务 348
15.6.1 ZooKeeper中的锁机制 349
15.6.2 ZooKeeper提供的一个写锁的实现 350
15.7使用ZooKeeper创建应用程序 351
15.8小结 355
第16章Avro详解 356
16.1 Avro简介 357
16.1.1模式声明 358
16.1.2数据序列化 362
16.1.3数据排列顺序 364
16.1.4对象容器文件 365
16.1.5协议声明 367
16.1.6协议传输格式 368
16.1.7模式解析 370
16.2 Avro的C/C﹢﹢实现 371
16.3 Avro的Java实现 382
16.4 GenAvro (Avro IDL)语言 385
16.5 Avro SASL概述 390
16.6小结 392
第17章Chukwa详解 393
17.1 Chukwa简介 394
17.2 Chukwa架构 395
17.2.1客户端(Agent)及其数据模型 395
17.2.2收集器(Collector)和分离解析器(Dernux) 396
17.2.3 HICC 398
17.3 Chukwa的可靠性 399
17.4 Chukwa集群搭建 400
17.4.1基本配置要求 400
17.4.2安装Chukwa 400
17.5 Chukwa数据流的处理 407
17.6 Chukwa与其他监控系统比较 408
17.7小结 409
第18章Hadoop的常用插件与开发 411
18.1 Hadoop Studio简介和使用 412
18.1.1 Hadoop Studio的安装和配置 412
18.1.2 Hadoop Studio的使用举例 413
18.2 Hadoop Eclipse简介和使用 419
18.2.1 Hadoop Eclipse安装和配置 420
18.2.2 Hadoop Eclipse的使用举例 420
18.2.3 Hadoop Eclipse插件开发 421
18.3 Hadoop Streaming简介和使用 422
18.3.1 Hadoop Streaming的使用举例 426
18.3.2使用Hadoop Streaming时常见的问题 428
18.4 Hadoop Libhdfs简介和使用 430
18.4.1 Hadoop Libhdfs安装和配置 430
18.4.2 Hadoop Libhdfs API简介 430
18.4.3 Hadoop Libhdfs的使用举例 431
18.5小结 432
附录A云计算在线检测平台 434
A.1平台介绍 435
A.2结构和功能 435
A.2.1前台用户接口的结构和功能 435
A.2.2后台程序运行的结构和功能 437
A.3检测流程 437
A.4使用 438
A.4.1功能使用 438
A.4.2返回结果介绍 439
A.4.3使用注意事项 440
A.5小结 441