标题：Hadoop实战
出版信息
  ISBN：9787115264480
定价：59.00元
作者：[美]Chuck Lam 著
译者：韩冀中
出版社：人民邮电出版社
出版时间：2011年10月 
版次：1.1
开本：16开
装帧：平装
字数：417千字 
页数：253页
内容简介
作为云计算所青睐的分布式架构，Hadoop是一个用Java语言实现的软件框架，在由大量计算机组成的集群中运行海量数据的分布式计算，是谷歌实现云计算的重要基石。《Hadoop实战》分为3个部分，深入浅出地介绍了Hadoop框架、编写和运行Hadoop数据处理程序所需的实践技能及Hadoop之外更大的生态系统。 　《Hadoop实战》适合需要处理大量离线数据的云计算程序员、架构师和项目经理阅读参考。
目录
第一部分　Hadoop——一种分布式编程框架 
第1章　Hadoop简介　2 
1.1　为什么写《Hadoop 实战》　3 
1.2　什么是Hadoop　3 
1.3　了解分布式系统和Hadoop　4 
1.4　比较SQL数据库和Hadoop　5 
1.5　理解MapReduce　6 
1.5.1　动手扩展一个简单程序　7 
1.5.2　相同程序在MapReduce中的扩展　9 
1.6　用Hadoop统计单词——运行第一个程序　11 
1.7　Hadoop历史　15 
1.8　小结　16 
1.9　资源　16 
第2章　初识Hadoop　17 
2.1　Hadoop的构造模块　17 
2.1.1　NameNode　17 
2.1.2　DataNode　18 
2.1.3　Secondary NameNode　19 
2.1.4　JobTracker　19 
2.1.5　TaskTracker　19 
2.2　为Hadoop集群安装SSH　21 
2.2.1　定义一个公共账号　21 
2.2.2　验证SSH安装　21 
2.2.3　生成SSH密钥对　21 
2.2.4　将公钥分布并登录验证　22 
2.3　运行Hadoop　22 
2.3.1　本地(单机)模式　23 
2.3.2　伪分布模式　24 
2.3.3　全分布模式　25 
2.4　基于Web的集群用户界面　28 
2.5　小结　30 
第3章　Hadoop组件　31 
3.1　HDFS文件操作　31 
3.1.1　基本文件命令　32 
3.1.2　编程读写HDFS　35 
3.2　剖析MapReduce程序　37 
3.2.1　Hadoop数据类型　39 
3.2.2　Mapper　40 
3.2.3　Reducer　41 
3.2.4　Partitioner：重定向Mapper输出　41 
3.2.5　Combiner：本地reduce　43 
3.2.6　预定义mapper和Reducer类的单词计数　43 
3.3　读和写　43 
3.3.1　InputFormat　44 
3.3.2　OutputFormat　49 
3.4　小结　50 
第二部分　实战 
第4章　编写MapReduce基础程序　52 
4.1　获得专利数据集　52 
4.1.1　专利引用数据　53 
4.1.2　专利描述数据　54 
4.2　构建MapReduce程序的基础模板　55 
4.3　计数　60 
4.4　适应Hadoop API的改变　64 
4.5　Hadoop的Streaming　67 
4.5.1　通过Unix命令使用Streaming　68 
4.5.2　通过脚本使用Streaming　69 
4.5.3　用Streaming处理键/值对　72 
4.5.4　通过Aggregate包使用Streaming　75 
4.6　使用combiner提升性能　80 
4.7　温故知新　83 
4.8　小结　84 
4.9　更多资源　84 
第5章　高阶MapReduce　85 
5.1　链接MapReduce作业　85 
5.1.1　顺序链接MapReduce作业　85 
5.1.2　具有复杂依赖的MapReduce链接　86 
5.1.3　预处理和后处理阶段的链接　86 
5.2　联结不同来源的数据　89 
5.2.1　Reduce侧的联结　90 
5.2.2　基于DistributedCache的复制联结　98 
5.2.3　半联结：map侧过滤后在reduce侧联结　101 
5.3　创建一个Bloom filter　102 
5.3.1　Bloom filter做了什么　102 
5.3.2　实现一个Bloom filter　104 
5.3.3　Hadoop 0.20以上版本的Bloom filter　110 
5.4　温故知新　110 
5.5　小结　111 
5.6　更多资源　112 
第6章　编程实践　113 
6.1　开发MapReduce程序　113 
6.1.1　本地模式　114 
6.1.2　伪分布模式　118 
6.2　生产集群上的监视和调试　123 
6.2.1　计数器　123 
6.2.2　跳过坏记录　125 
6.2.3　用IsolationRunner重新运行出错的任务　128 
6.3　性能调优　129 
6.3.1　通过combiner来减少网络流量　129 
6.3.2　减少输入数据量　129 
6.3.3　使用压缩　129 
6.3.4　重用JVM　132 
6.3.5　根据猜测执行来运行　132 
6.3.6　代码重构与算法重写　133 
6.4　小结　134 
第7章　细则手册　135 
7.1　向任务传递作业定制的参数　135 
7.2　探查任务特定信息　137 
7.3　划分为多个输出文件　138 
7.4　以数据库作为输入输出　143 
7.5　保持输出的顺序　145 
7.6　小结　146 
第8章　管理Hadoop　147 
8.1　为实际应用设置特定参数值　147 
8.2　系统体检　149 
8.3　权限设置　151 
8.4　配额管理　151 
8.5　启用回收站　152 
8.6　删减DataNode　152 
8.7　增加DataNode　153 
8.8　管理NameNode和SNN　153 
8.9　恢复失效的NameNode　155 
8.10　感知网络布局和机架的设计　156 
8.11　多用户作业的调度　157 
8.11.1　多个JobTracker　158 
8.11.2　公平调度器　158 
8.12　小结　160 
第三部分　Hadoop也疯狂 
第9章　在云上运行Hadoop　162 
9.1　Amazon Web Services简介　162 
9.2　安装AWS　163 
9.2.1　获得AWS身份认证凭据　164 
9.2.2　获得命令行工具　166 
9.2.3　准备SSH密钥对　168 
9.3　在EC2上安装Hadoop　169 
9.3.1　配置安全参数　169 
9.3.2　配置集群类型　169 
9.4　在EC2上运行MapReduce程序　171 
9.4.1　将代码转移到Hadoop集群上　171 
9.4.2　访问Hadoop集群上的数据　172 
9.5　清空和关闭EC2实例　175 
9.6　Amazon Elastic MapReduce和其他AWS服务　176 
9.6.1　Amazon Elastic MapReduce　176 
9.6.2　AWS导入/导出　177 
9.7　小结　177 
第10章　用Pig编程　178 
10.1　像Pig一样思考　178 
10.1.1　数据流语言　179 
10.1.2　数据类型　179 
10.1.3　用户定义函数　179 
10.2　安装Pig　179 
10.3　运行Pig　180 
10.4　通过Grunt学习Pig Latin　182 
10.5　谈谈Pig Latin　186 
10.5.1　数据类型和schema　186 
10.5.2　表达式和函数　187 
10.5.3　关系型运算符　189 
10.5.4　执行优化　196 
10.6　用户定义函数　196 
10.6.1　使用UDF　196 
10.6.2　编写UDF　197 
10.7　脚本　199 
10.7.1　注释　199 
10.7.2　参数替换　200 
10.7.3　多查询执行　201 
10.8　Pig实战——计算相似专利的例子　201 
10.9　小结　206 
第11章　Hive及Hadoop群　207 
11.1　Hive　207 
11.1.1　安装与配置Hive　208 
11.1.2　查询的示例　210 
11.1.3　深入HiveQL　213 
11.1.4　Hive小结　221 
11.2　其他Hadoop相关的部分　221 
11.2.1　HBase　221 
11.2.2　ZooKeeper　221 
11.2.3　Cascading　221 
11.2.4　Cloudera　222 
11.2.5　Katta　222 
11.2.6　CloudBase　222 
11.2.7　Aster Data和Greenplum　222 
11.2.8　Hama和Mahout　223 
11.3　小结　223 
第12章　案例研究　224 
12.1　转换《纽约时报》1100万个库存图片文档　224 
12.2　挖掘中国移动的数据　225 
12.3　在StumbleUpon推荐最佳网站　229 
12.3.1　分布式StumbleUpon的开端　230 
12.3.2　HBase和StumbleUpon　230 
12.3.3　StumbleUpon上的更多Hadoop应用　236 
12.4　搭建面向企业查询的分析系统——IBM的ES2项目　238 
12.4.1　ES2系统结构　240 
12.4.2　ES2爬虫　241 
12.4.3　ES2分析　242 
12.4.4　小结　249 
12.4.5　参考文献　250 
附录A　HDFS文件命令　251
构建hadoop运算坚实的平台
百度构建了超大规模的服务器集群来运行Hadoop，其中日志处理与分析站到了全部hadoop集群的80%，处理数据量从几个G到上P，运行时间从几分钟到几十个小时。[1]
谈到Hadoop集群的硬件基础，马如悦告诉IT168编辑：“百度使用的服务器品牌较多，市面上主流的服务器品牌均有涉及，但绝大多数都基于英特尔X86平台，配置则大体上是8核CPU(主要是英特尔至强7400/7500系列)，32GB内存，12TB硬盘。此外我们也在尝试定制自己的服务器。”
“选用什么样的服务器需要根据具体的应用而定。比如使用hadoop做日志存储和挖掘，可以参考百度上面的配置。如果是作为HBase的底层存储，并且有大量的随机查询，那么使用SAS硬盘，甚至SSD都是可以的。不同的业务需要不同类型的配置。即使同一个业务，也可能需要分层考虑。这样才能做到成本最低。”
大体来说，hadoop应用对系统的要求侧重计算、存储与网络性能的均衡，这一点则正好与英特尔X86平台不谋而合。英特尔至强7400/7500系列处理器已然为百度Hadoop集群奠定了坚实的硬件平台，今年英特尔发布的至强E5平台则无论在性能、吞吐能力和带宽方面都有均衡的提升。
英特尔最新一代E5处理器相比前代至强5600处理性能提高了80%，同时，英特尔E5芯片中的DDIO技术也大大提高整体IO性能，这一技术能把IO数据包指向处理缓存，跳过内存，从而能够大大减少延迟，增强系统总带宽，还消除了内存的功耗。英特尔集成IO把IO子系统移到了处理器芯片处下，同时得益于PCI-E 3.0的支持，可以把服务器平台的延迟减少多达30%，带宽增加2倍。