Hadoop实战 第二版
作者:陆嘉恒 著
出版时间:2012年版
《Hadoop实战(第2版)》能满足读者全面学习最新的Hadoop技术及其相关技术(Hive、HBase等)的需求,是一本系统且极具实践指导意义的Hadoop工具书和参考书。第1版上市后广受好评,被誉为学习Hadoop技术的经典著作之一。与第1版相比,第2版技术更新颖,所有技术都针对最新版进行了更新;内容更全面,几乎每一个章节都增加了新内容,而且增加了新的章节;实战性更强,案例更丰富;细节更完美,对第1版中存在的缺陷和不足进行了修正。 本书内容全面,对Hadoop整个技术体系进行了全面的讲解,不仅包括HDFS、MapReduce、YARN等核心内容,而且还包括Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等与Hadoop技术相关的重要内容。实战性强,不仅为各个知识点精心设计了大量经典的小案例,而且还包括Yahoo!等多个大公司的企业级案例,可操作系极强。 《Hadoop实战(第2版)》全书一共19章:第1~2章首先对Hadoop进行了全方位的宏观介绍,然后介绍了Hadoop在三大主流操作系统平台上的安装与配置方法;第3~6章分别详细讲解了MapReduce计算模型、MapReduce的工作机制、MapReduce应用的开发方法,以及多个精巧的MapReduce应用案例;第7章全面讲解了Hadoop的I/O操作;第8章对YARN进行了介绍;第9章对HDFS进行了详细讲解和分析;第10章细致地讲解了Hadoop的管理;第11~17章对Hadoop大生态系统中的Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等技术进行了详细的讲解;第18章讲解了Hadoop的各种常用插件,以及Hadoop插件的开发方法;第19章分析了Hadoop在Yahoo!、eBay、百度、Facebook等企业中的应用案例。
目录
- 前言
- 第1章Hadoop简介/1
- 1.1什么是Hadoop/2
- 1.1.1Hadoop概述/2
- 1.1.2Hadoop的历史/2
- 1.1.3Hadoop的功能与作用/2
- 1.1.4Hadoop的优势/3
- 1.1.5Hadoop应用现状和发展趋势/3
- 1.2Hadoop项目及其结构/3
- 1.3Hadoop体系结构/6
- 1.4Hadoop与分布式开发/7
- 1.5Hadoop计算模型—MapReduce/10
- 1.6Hadoop数据管理/10
- 1.6.1HDFS的数据管理/10
- 1.6.2HBase的数据管理/12
- 1.6.3Hive的数据管理/13
- 1.7Hadoop集群安全策略/15
- 1.8本章小结/17
- 第2章Hadoop的安装与配置/19
- 2.1在Linux上安装与配置Hadoop/20
- 2.1.1安装JDK 1.6/20
- 2.1.2配置SSH免密码登录/21
- 2.1.3安装并运行Hadoop/22
- 2.2在Mac OSX上安装与配置Hadoop/24
- 2.2.1安装Homebrew/24
- 2.2.2使用Homebrew安装Hadoop/25
- 2.2.3配置SSH和使用Hadoop/25
- 2.3在Windows上安装与配置Hadoop/25
- 2.3.1安装JDK 1.6或更高版本/25
- 2.3.2安装Cygwin/25
- 2.3.3配置环境变量/26
- 2.3.4安装sshd服务/26
- 2.3.5启动sshd服务/26
- 2.3.6配置SSH免密码登录/26
- 2.3.7安装并运行Hadoop/26
- 2.4安装和配置Hadoop集群/27
- 2.4.1网络拓扑/27
- 2.4.2定义集群拓扑/27
- 2.4.3建立和安装Cluster /28
- 2.5日志分析及几个小技巧/34
- 2.6本章小结/35
- 第3章MapReduce计算模型/36
- 3.1为什么要用MapReduce/37
- 3.2MapReduce计算模型/38
- 3.2.1MapReduce Job/38
- 3.2.2Hadoop中的Hello World程序/38
- 3.2.3MapReduce的数据流和控制流/46
- 3.3MapReduce任务的优化/47
- 3.4Hadoop流/49
- 3.4.1Hadoop流的工作原理/50
- 3.4.2Hadoop流的命令/51
- 3.4.3两个例子/52
- 3.5Hadoop Pipes/54
- 3.6本章小结/56
- 第4章开发MapReduce应用程序/57
- 4.1系统参数的配置/58
- 4.2配置开发环境/60
- 4.3编写MapReduce程序/60
- 4.3.1Map处理/60
- 4.3.2Reduce处理/61
- 4.4本地测试/62
- 4.5运行MapReduce程序/62
- 4.5.1打包/64
- 4.5.2在本地模式下运行/64
- 4.5.3在集群上运行/64
- 4.6网络用户界面/65
- 4.6.1JobTracker页面/65
- 4.6.2工作页面/65
- 4.6.3返回结果/66
- 4.6.4任务页面/67
- 4.6.5任务细节页面/67
- 4.7性能调优/68
- 4.7.1输入采用大文件/68
- 4.7.2压缩文件/68
- 4.7.3过滤数据/69
- 4.7.4修改作业属性/71
- 4.8MapReduce工作流/72
- 4.8.1复杂的Map和Reduce函数/72
- 4.8.2MapReduce Job中全局共享数据/74
- 4.8.3链接MapReduce Job/75
- 4.9本章小结/77
- 第5章MapReduce应用案例/79
- 5.1单词计数/80
- 5.1.1实例描述/80
- 5.1.2设计思路/80
- 5.1.3程序代码/81
- 5.1.4代码解读/82
- 5.1.5程序执行/83
- 5.1.6代码结果/83
- 5.1.7代码数据流/84
- 5.2数据去重/85
- 5.2.1实例描述/85
- 5.2.2设计思路/86
- 5.2.3程序代码/86
- 5.3排序/87
- 5.3.1实例描述/87
- 5.3.2设计思路/88
- 5.3.3程序代码/89
- 5.4单表关联/91
- 5.4.1实例描述/91
- 5.4.2设计思路/92
- 5.4.3程序代码/92
- 5.5多表关联/95
- 5.5.1实例描述/95
- 5.5.2设计思路/96
- 5.5.3程序代码/96
- 5.6本章小结/98
- 第6章MapReduce工作机制/99
- 6.1MapReduce作业的执行流程/100
- 6.1.1MapReduce任务执行总流程/100
- 6.1.2提交作业/101
- 6.1.3初始化作业/103
- 6.1.4分配任务/104
- 6.1.5执行任务/106
- 6.1.6更新任务执行进度和状态/107
- 6.1.7完成作业/108
- 6.2错误处理机制 /108
- 6.2.1硬件故障/109
- 6.2.2任务失败/109
- 6.3作业调度机制/110
- 6.4Shuffle和排序/111
- 6.4.1Map端/111
- 6.4.2Reduce端/113
- 6.4.3shuffle过程的优化/114
- 6.5任务执行/114
- 6.5.1推测式执行/114
- 6.5.2任务JVM重用/115
- 6.5.3跳过坏记录/115
- 6.5.4任务执行环境/116
- 6.6本章小结/117
- 第7章Hadoop I/O操作/118
- 7.1I/O操作中的数据检查/119
- 7.2数据的压缩 /126
- 7.2.1Hadoop对压缩工具的选择/126
- 7.2.2压缩分割和输入分割/127
- 7.2.3在MapReduce程序中使用压缩/127
- 7.3数据的I/O中序列化操作/128
- 7.3.1Writable类/128
- 7.3.2实现自己的Hadoop数据类型/137
- 7.4针对Mapreduce的文件类/139
- 7.4.1SequenceFile类/139
- 7.4.2MapFile类/144
- 7.4.3ArrayFile、SetFile和BloomMapFile/146
- 7.5本章小结/148
- 第8章下一代MapReduce:YARN/149
- 8.1MapReduce V2设计需求/150
- 8.2MapReduce V2主要思想和架构/151
- 8.3MapReduce V2设计细节/153
- 8.4MapReduce V2优势/156
- 8.5本章小结/156
- 第9章HDFS详解/157
- 9.1Hadoop的文件系统/158
- 9.2HDFS简介/160
- 9.3HDFS体系结构/161
- 9.3.1HDFS的相关概念/161
- 9.3.2HDFS的体系结构/162
- 9.4HDFS的基本操作/164
- 9.4.1HDFS的命令行操作/164
- 9.4.2HDFS的Web界面/165
- 9.5HDFS常用Java API详解/166
- 9.5.1使用Hadoop URL读取数据/166
- 9.5.2使用FileSystem API读取数据/167
- 9.5.3创建目录/169
- 9.5.4写数据/169
- 9.5.5删除数据/171
- 9.5.6文件系统查询/171
- 9.6HDFS中的读写数据流/175
- 9.6.1文件的读取/175
- 9.6.2文件的写入/176
- 9.6.3一致性模型/178
- 9.7HDFS命令详解/179
- 9.7.1通过distcp进行并行复制/179
- 9.7.2HDFS的平衡/180
- 9.7.3使用Hadoop归档文件/180
- 9.7.4其他命令/183
- 9.8WebHDFS/186
- 9.8.1WebHDFS的配置/186
- 9.8.2WebHDFS命令/186
- 9.9本章小结/190
- 第10章Hadoop的管理/191
- 10.1HDFS文件结构/192
- 10.2Hadoop的状态监视和管理工具/196
- 10.2.1审计日志/196
- 10.2.2监控日志/196
- 10.2.3Metrics/197
- 10.2.4Java管理扩展 /199
- 10.2.5Ganglia/200
- 10.2.6Hadoop管理命令/202
- 10.3Hadoop集群的维护/206
- 10.3.1安全模式/206
- 10.3.2Hadoop的备份/207
- 10.3.3Hadoop的节点管理/208
- 10.3.4系统升级/210
- 10.4本章小结/212
- 第11章Hive详解/213
- 11.1Hive简介/214
- 11.1.1Hive的数据存储/214
- 11.1.2Hive的元数据存储/216
- 11.2Hive的基本操作/216
- 11.2.1在集群上安装Hive/216
- 11.2.2配置MySQL存储Hive元数据/218
- 11.2.3配置Hive/220
- 11.3Hive QL详解/221
- 11.3.1数据定义(DDL)操作/221
- 11.3.2数据操作(DML)/231
- 11.3.3SQL操作/233
- 11.3.4Hive QL使用实例/235
- 11.4Hive网络(Web UI)接口/237
- 11.4.1Hive网络接口配置/237
- 11.4.2Hive网络接口操作实例/238
- 11.5Hive的JDBC接口//241
- 11.5.1Eclipse环境配置/241
- 11.5.2程序实例/241
- 11.6Hive的优化/244
- 11.7本章小结/246
- 第12章HBase详解/247
- 12.1HBase简介/248
- 12.2HBase的基本操作/249
- 12.2.1HBase的安装/249
- 12.2.2运行HBase /253
- 12.2.3HBase Shell/255
- 12.2.4HBase配置/258
- 12.3HBase体系结构/260
- 12.3.1HRegion/260
- 12.3.2HRegion服务器/261
- 12.3.3HBase Master服务器/262
- 12.3.4ROOT表和META表/262
- 12.3.5ZooKeeper/263
- 12.4HBase数据模型/263
- 12.4.1数据模型/263
- 12.4.2概念视图/264
- 12.4.3物理视图/264
- 12.5HBase与RDBMS/265
- 12.6HBase与HDFS/266
- 12.7HBase客户端/266
- 12.8Java API /267
- 12.9HBase编程 /273
- 12.9.1使用Eclipse开发HBase应用程序/273
- 12.9.2HBase编程/275
- 12.9.3HBase与MapReduce/278
- 12.10模式设计/280
- 12.10.1模式设计应遵循的原则/280
- 12.10.2学生表/281
- 12.10.3事件表/282
- 12.11本章小结/283
- 第13章Mahout详解/284
- 13.1Mahout简介/285
- 13.2Mahout的安装和配置/285
- 13.3Mahout API简介/288
- 13.4Mahout中的频繁模式挖掘/290
- 13.4.1什么是频繁模式挖掘/290
- 13.4.2Mahout中的频繁模式挖掘/290
- 13.5Mahout中的聚类和分类/292
- 13.5.1什么是聚类和分类/292
- 13.5.2Mahout中的数据表示/293
- 13.5.3将文本转化成向量/294
- 13.5.4Mahout中的聚类、分类算法/295
- 13.5.5算法应用实例/299
- 13.6Mahout应用:建立一个推荐引擎/304
- 13.6.1推荐引擎简介/304
- 13.6.2使用Taste构建一个简单的推荐引擎/305
- 13.6.3简单分布式系统下基于产品的推荐系统简介/307
- 13.7本章小结/309
- 第14章Pig详解/310
- 14.1Pig简介/311
- 14.2Pig的安装和配置 /311
- 14.2.1Pig的安装条件/311
- 14.2.2Pig的下载、安装和配置/312
- 14.2.3Pig运行模式/313
- 14.3Pig Latin语言/315
- 14.3.1Pig Latin语言简介/315
- 14.3.2Pig Latin的使用/316
- 14.3.3Pig Latin的数据类型/318
- 14.3.4Pig Latin关键字/319
- 14.4用户定义函数 /323
- 14.4.1编写用户定义函数/324
- 14.4.2使用用户定义函数/325
- 14.5Zebra简介 /326
- 14.5.1Zebra的安装/326
- 14.5.2Zebra的使用简介/327
- 14.6Pig实例 /328
- 14.6.1Local模式/328
- 14.6.2MapReduce模式/330
- 14.7Pig进阶/331
- 14.7.1数据实例/331
- 14.7.2Pig数据分析/332
- 14.8本章小结/336
- 第15章ZooKeeper详解/337
- 15.1ZooKeeper简介/338
- 15.1.1ZooKeeper的设计目标/338
- 15.1.2数据模型和层次命名空间/339
- 15.1.3ZooKeeper中的节点和临时节点/339
- 15.1.4ZooKeeper的应用/340
- 15.2ZooKeeper的安装和配置/340
- 15.2.1安装ZooKeeper /340
- 15.2.2配置ZooKeeper/346
- 15.2.3运行ZooKeeper/348
- 15.3ZooKeeper的简单操作/350
- 15.3.1使用ZooKeeper命令的简单操作步骤/350
- 15.3.2ZooKeeper API的简单使用/352
- 15.4ZooKeeper的特性/355
- 15.4.1ZooKeeper的数据模型/355
- 15.4.2ZooKeeper会话及状态/356
- 15.4.3ZooKeeper watches/357
- 15.4.4ZooKeeper ACL/358
- 15.4.5ZooKeeper的一致性保证/359
- 15.5使用ZooKeeper进行Leader选举/359
- 15.6ZooKeeper锁服务/360
- 15.6.1ZooKeeper中的锁机制/360
- 15.6.2ZooKeeper提供的一个写锁的实现/361
- 15.7使用ZooKeeper创建应用程序 /363
- 15.7.1使用Eclipse开发ZooKeeper应用程序/363
- 15.7.2应用程序实例/365
- 15.8BooKeeper/369
- 15.9本章小结/371
- 第16章Avro详解/372
- 16.1Avro介绍/373
- 16.1.1模式声明/374
- 16.1.2数据序列化/378
- 16.1.3数据排列顺序/380
- 16.1.4对象容器文件 /381
- 16.1.5协议声明/382
- 16.1.6协议传输格式/383
- 16.1.7模式解析/386
- 16.2Avro的C/C++实现/387
- 16.3Avro的Java实现/398
- 16.4GenAvro(Avro IDL)语言/402
- 16.5Avro SASL概述/406
- 16.6本章小结/407
- 第17章Chukwa详解/409
- 17.1Chukwa简介/410
- 17.2Chukwa架构/411
- 17.2.1客户端及其数据模型/412
- 17.2.2收集器/413
- 17.2.3归档器和分离解析器/414
- 17.2.4HICC/415
- 17.3Chukwa的可靠性/415
- 17.4Chukwa集群搭建/416
- 17.4.1基本配置要求/416
- 17.4.2Chukwa的安装/416
- 17.4.3Chukwa的运行/419
- 17.5Chukwa数据流的处理/424
- 17.6Chukwa与其他监控系统比较/425
- 17.7本章小结/426
- 本章参考资料/426
- 第18章Hadoop的常用插件与开发/428
- 18.1Hadoop Studio的介绍和使用/429
- 18.1.1Hadoop Studio的介绍/429
- 18.1.2Hadoop Studio的安装配置/430
- 18.1.3Hadoop Studio的使用举例/430
- 18.2Hadoop Eclipse的介绍和使用/436
- 18.2.1Hadoop Eclipse的介绍/436
- 18.2.2Hadoop Eclipse的安装配置/437
- 18.2.3Hadoop Eclipse的使用举例/438
- 18.3Hadoop Streaming的介绍和使用/440
- 18.3.1Hadoop Streaming的介绍/440
- 18.3.2Hadoop Streaming的使用举例/444
- 18.3.3使用Hadoop Streaming常见的问题/446
- 18.4Hadoop Libhdfs的介绍和使用/448
- 18.4.1Hadoop Libhdfs的介绍/448
- 18.4.2Hadoop Libhdfs的安装配置/448
- 18.4.3Hadoop Libhdfs API简介/448
- 18.4.4Hadoop Libhdfs的使用举例/449
- 18.5本章小结/450
- 第19章企业应用实例/452
- 19.1Hadoop在Yahoo!的应用/453
- 19.2Hadoop在eBay的应用/455
- 19.3Hadoop在百度的应用/457
- 19.4即刻搜索中的Hadoop/460
- 19.4.1即刻搜索简介/460
- 19.4.2即刻Hadoop应用架构/460
- 19.4.3即刻Hadoop应用分析/463
- 19.5Facebook中的Hadoop和HBase/463
- 19.5.1Facebook中的任务特点/464
- 19.5.2MySQL VS Hadoop+HBase/466
- 19.5.3Hadoop和HBase的实现/467
- 19.6本章小结/472
- 本章参考资料/472
- 附录A云计算在线检测平台/474
- 附录BHadoop安装、运行与使用说明/484
- 附录C使用DistributedCache的MapReduce程序/491
-
附录D使用ChainMapper和ChainReducer的MapReduce程序/495