Hadoop权威指南(第3版)
Tom White
华东师范大学数据科学与工程学院 译
出版时间:2014年10月
页数:678
“你终于有机会向大师学习Hadoop了——不仅是技术,还有常识和大实话。”
——Doug Cutting,Cloudera

准备好释放数据的强大潜能了吗?借助于这本《Hadoop权威指南》,你将学习如何使用Apache Hadoop构建和维护稳定性高、伸缩性强的分布式系统。本书是为程序员写的,可帮助他们分析任何大小的数据集。本书同时也是为管理员写的,帮助他们了解如何设置和运行Hadoop集群。
本书通过丰富的案例学习来解释Hadoop的幕后机理,阐述了Hadoop如何解决现实生活中的具体问题。第3版覆盖Hadoop的最新动态,包括MapReduce API、MapReduce 2及其灵活性更强的执行模型(YARN)。

本书主题:
· 使用Hadoop分布式文件系统(HDFS)存储大数据集
· 使用MapReduce运行分布式计算
· 使用Hadoop的数据和I/O构建块进行压缩、数据完整性、序列化(包括Avro)和持久化
· 探究MapReduce应用开发中常见的陷阱和高级特性
· 设计、构建和管理Hadoop专用集群或在云上运行Hadoop
· 使用Sqoop把数据从关系型数据库载入HDFS,
· 使用Pig查询语言执行大规模数据处理
· 使用Hive(Hadoop的数据仓库系统)来分析数据集
· 充分利用HBase(针对结构化数据和半结构化数据)以及充分利用Zookeeper构建分布式系统
  1. 第1章 初识Hadoop
  2. 1.1 数据!数据!
  3. 1.2 数据的存储与分析
  4. 1.3 相较于其他系统的优势
  5. 1.3.1 关系型数据库管理系统
  6. 1.3.2 网格计算
  7. 1.3.3 志愿计算
  8. 1.4 Hadoop发展简史
  9. 1.5 Apache Hadoop和Hadoop生态系统
  10. 1.6 Hadoop的发行版本
  11. 1.6.1 本书包含的内容
  12. 1.6.2 兼容性
  13. 第2章 关于MapReduce
  14. 2.1 气象数据集
  15. 2.2 使用Unix工具来分析数据
  16. 2.3 使用Hadoop来分析数据
  17. 2.3.1 map和reduce
  18. 2.3.2 Java MapReduce
  19. 2.4 横向扩展
  20. 2.4.1 数据流
  21. 2.4.2 combiner函数
  22. 2.4.3 运行分布式的MapReduce作业
  23. 2.5 Hadoop Streaming
  24. 2.5.1 Ruby版本
  25. 2.5.2 Python版本
  26. 2.6 Hadoop Pipes
  27. 第3章 Hadoop分布式文件系统
  28. 3.1 HDFS的设计
  29. 3.2 HDFS的概念
  30. 3.2.1 数据块
  31. 3.2.2 namenode和datanode
  32. 3.2.3 联邦HDFS
  33. 3.2.4 HDFS的高可用性
  34. 3.3 命令行接口
  35. 3.4 Hadoop文件系统
  36. 3.5 Java接口
  37. 3.5.1 从Hadoop URL读取数据
  38. 3.5.2 通过FileSystem API读取数据
  39. 3.5.3 写入数据
  40. 3.5.4 目录
  41. 3.5.5 查询文件系统
  42. 3.5.6 删除数据
  43. 3.6 数据流
  44. 3.6.1 剖析文件读取
  45. 3.6.2 剖析文件写入
  46. 3.6.3 一致模型
  47. 3.7 通过Flume和Sqoop导入数据
  48. 3.8 通过distcp并行复制
  49. 3.9 Hadoop存档
  50. 3.9.1 使用Hadoop存档工具
  51. 3.9.2 不足
  52. 第4章 Hadoop的I/O操作
  53. 4.1 数据完整性
  54. 4.1.1 HDFS的数据完整性
  55. 4.1.2 LocalFileSystem
  56. 4.1.3 ChecksumFileSystem
  57. 4.2 压缩
  58. 4.2.1 codec
  59. 4.2.2 压缩和输入分片
  60. 4.2.3 在MapReduce中使用压缩
  61. 4.3 序列化
  62. 4.3.1 Writable接口
  63. 4.3.2 Writable类
  64. 4.3.3 实现定制的Writable集合
  65. 4.3 序列化框架
  66. 4.4 Avro
  67. 4.4.1 Avro数据类型和模式
  68. 4.4.2 内存中的序列化和反序列化
  69. 4.4.3 Avro数据文件
  70. 4.4.4 互操作性
  71. 4.4.5 模式的解析
  72. 4.4.6 排列顺序
  73. 4.4.7 关于Avro MapReduce
  74. 4.4.8 使用Avro MapReduce进行排序
  75. 4.4.9 其他语言的Avro MapReduce
  76. 4.5 基于文件的数据结构
  77. 4.5.1 关于SequenceFile
  78. 4.5.2 关于MapFile
  79. 第5章 MapReduce应用开发
  80. 5.1 用于配置的API
  81. 5.1.1 资源合并
  82. 5.1.2 可变的扩展
  83. 5.2 配置开发环境
  84. 5.2.1 管理配置
  85. 5.2.2 辅助类GenericOptionsParser,Tool和ToolRunner
  86. 5.3 用MRUnit来写单元测试
  87. 5.3.1 关于Mapper
  88. 5.3.2 关于Reducer
  89. 5.4 本地运行测试数据
  90. 5.4.1 在本地作业运行器上运行作业
  91. 5.4.2 测试驱动程序
  92. 5.5 在集群上运行
  93. 5.5.1 打包作业
  94. 5.5.2 启动作业
  95. 5.5.3 MapReduce的Web界面
  96. 5.5.4 获取结果
  97. 5.5.5 作业调试
  98. 5.5.6 Hadoop日志
  99. 5.5.7 远程调试
  100. 5.6 作业调优
  101. 5.7 MapReduce的工作流
  102. 5.7.1 将问题分解成MapReduce作业
  103. 5.7.2 关于JobControl
  104. 5.7.3 关于Apache Oozie
  105. 第6章 MapReduce的工作机制
  106. 6.1 剖析MapReduce作业运行机制
  107. 6.1.1 经典的MapReduce (MapReduce 1)
  108. 6.1.2 YARN (MapReduce 2)
  109. 6.2 失败
  110. 6.2.1 经典MapReduce中的失败
  111. 6.2.2 YARN中的失败
  112. 6.3 作业的调度
  113. 6.3.1 公平调度器
  114. 6.3.2 容量调度器
  115. 6.4 shuffle和排序
  116. 6.4.1 map端
  117. 6.4.2 reduce端
  118. 6.4.3 配置调优
  119. 6.5 任务的执行
  120. 6.5.1 任务执行环境
  121. 6.5.2 推测执行
  122. 6.5.3 关于OutputCommitters
  123. 6.5.4 任务JVM重用
  124. 6.5.5 跳过坏记录
  125. 第7章 MapReduce的类型与格式
  126. 7.1 MapReduce的类型
  127. 7.1.1 默认的MapReduce作业
  128. 7.1.2 默认的Streaming作业
  129. 7.2 输入格式
  130. 7.2.1 输入分片与记录
  131. 7.2.2 文本输入
  132. 7.2.3 二进制输入
  133. 7.2.4 多个输入
  134. 7.2.5 数据库输入(和输出)
  135. 7.3 输出格式
  136. 7.3.1 文本输出
  137. 7.3.2 二进制输出
  138. 7.3.3 多个输出
  139. 7.3.4 延迟输出
  140. 7.3.5 数据库输出
  141. 第8章 MapReduce的特性
  142. 8.1 计数器
  143. 8.1.1 内置计数器
  144. 8.1.2 用户定义的Java计数器
  145. 8.1.3 用户定义的Streaming计数器
  146. 8.2 排序
  147. 8.2.1 准备
  148. 8.2.2 部分排序
  149. 8.2.3 全排序
  150. 8.2.4 辅助排序
  151. 8.3 连接
  152. 8.3.1 map端连接
  153. 8.3.2 reduce端连接
  154. 8.4 边数据分布
  155. 8.4.1 利用JobConf来配置作业
  156. 8.4.2 分布式缓存
  157. 8.5 MapReduce库类
  158. 第9章 构建Hadoop集群
  159. 9.1 集群规范
  160. 9.2 集群的构建和安装
  161. 9.2.1 安装Java
  162. 9.2.2 创建Hadoop用户
  163. 9.2.3 安装Hadoop
  164. 9.2.4 测试安装
  165. 9.3 SSH配置
  166. 9.4 Hadoop配置
  167. 9.4.1 配置管理
  168. 9.4.2 环境设置
  169. 9.4.3 Hadoop守护进程的关键属性
  170. 9.4.4 Hadoop守护进程的地址和端口
  171. 9.4.5 Hadoop的其他属性
  172. 9.4.6 创建用户帐号
  173. 9.5 YARN配置
  174. 9.5.1 YARN守护进程的重要属性
  175. 9.5.2 YARN守护进程的地址和端口
  176. 9.6 安全性
  177. 9.6.1 Kerberos和Hadoop
  178. 9.6.2 委托令牌
  179. 9.6.3 其他安全性改进
  180. 9.7 利用基准评测程序测试Hadoop集群
  181. 9.7.1 Hadoop基准评测程序
  182. 9.7.2 用户作业
  183. 9.8 云端的Hadoop
  184. 第10章 管理Hadoop
  185. 10.1 HDFS
  186. 10.1.1 永久性数据结构
  187. 10.1.2 安全模式
  188. 10.1.3 日志审计
  189. 10.1.4 工具
  190. 10.2 监控
  191. 10.2.1 日志
  192. 10.2.2 度量
  193. 10.2.3 Java管理扩展(JMX)
  194. 10.3 维护
  195. 10.3.1 日常管理过程
  196. 10.3.2 委任和解除节点
  197. 10.3.3 升级
  198. 第11章 关于Pig
  199. 11.1 安装与运行Pig
  200. 11.1.1 执行类型
  201. 11.1.2 运行Pig程序
  202. 11.1.3 Grunt
  203. 11.1.4 Pig Latin编辑器
  204. 11.2 示例
  205. 11.3 与数据库进行比较
  206. 11.4 Pig Latin
  207. 11.4.1 结构
  208. 11.4.2 语句
  209. 11.4.3 表达式
  210. 11.4.4 类型
  211. 11.4.5 模式
  212. 11.4.6 函数
  213. 11.4.7 宏
  214. 11.5 用户自定义函数
  215. 11.5.1 过滤UDF
  216. 11.5.2 计算UDF
  217. 11.5.3 加载UDF
  218. 11.6 数据处理操作
  219. 11.6.1 数据的加载和存储
  220. 11.6.2 数据的过滤
  221. 11.6.3 数据的分组与连接
  222. 11.6.4 数据的排序
  223. 11.6.5 数据的组合和切分
  224. 11.7 Pig实战
  225. 11.7.1 并行处理
  226. 11.7.2 参数代换
  227. 第12章 关于Hive
  228. 12.1 安装Hive
  229. 12.2 示例
  230. 12.3 运行Hive
  231. 12.3.1 配置Hive
  232. 12.3.2 Hive服务
  233. 12.3.3 Metastore
  234. 12.4 Hive与传统数据库相比
  235. 12.4.1 读时模式vs.写时模式
  236. 12.4.2 更新、事务和索引
  237. 12.5 HiveQL
  238. 12.5.1 数据类型
  239. 12.5.2 操作与函数
  240. 12.6 表
  241. 12.6.1 托管表和外部表
  242. 12.6.2 分区和桶
  243. 12.6.3 存储格式
  244. 12.6.4 导入数据
  245. 12.6.5 表的修改
  246. 12.6.6 表的丢弃
  247. 12.7 查询数据
  248. 12.7.1 排序和聚集
  249. 12.7.2 MapReduce脚本
  250. 12.7.3 连接
  251. 12.7.4 子查询
  252. 12.7.5 视图
  253. 12.8 用户定义函数
  254. 12.8.1 写UDF
  255. 12.8.2 写UDAF
  256. 第13章 关于HBase
  257. 13.1 HBase基础
  258. 13.2 概念
  259. 13.3.1 数据模型的“旋风之旅”
  260. 13.3.2 实现
  261. 13.3 安装
  262. 13.4 客户端
  263. 13.4.1 Java
  264. 13.4.2 Avro、REST和Thrift
  265. 13.5 示例
  266. 13.5.1 模式
  267. 13.5.2 加载数据
  268. 13.5.3 Web查询
  269. 13.6 HBase和RDBMS的比较
  270. 13.6.1 成功的服务
  271. 13.6.2 HBase
  272. 13.6.3 实例:HBase在Streamy.com的使用
  273. 13.7 Praxis
  274. 13.7.1 版本
  275. 13.7.2 HDFS
  276. 13.7.3 用户界面
  277. 13.7.4 度量
  278. 13.7.5 模式的设计
  279. 13.7.6 计数器
  280. 13.7.7 批量加载
  281. 第14章 关于ZooKeeper
  282. 14.1 安装和运行ZooKeeper
  283. 14.2 示例
  284. 14.2.1 ZooKeeper中的组成员关系
  285. 14.2.2 创建组
  286. 14.2.3 加入组
  287. 14.2.4 列出组成员
  288. 14.2.5 删除组
  289. 14.3 ZooKeeper服务
  290. 14.3.1 数据模型
  291. 14.3.2 操作
  292. 14.3.3 实现
  293. 14.3.4 一致性
  294. 14.3.5 会话
  295. 14.3.6 状态
  296. 14.4 使用ZooKeeper来构建应用
  297. 14.4.1 配置服务
  298. 14.4.2 可复原的ZooKeeper应用
  299. 14.4.3 锁服务
  300. 14.4.4 更多分布式数据结构和协议
  301. 14.5 生产环境中的ZooKeeper
  302. 14.5.1 可恢复性和性能
  303. 14.5.2 配置
  304. 第15章 关于Sqoop
  305. 15.1 获取Sqoop
  306. 15.2 Sqoop连接器
  307. 15.3 一个导入的例子
  308. 15.4 生成代码
  309. 15.5 深入了解数据库导入
  310. 15.5.1 导入控制
  311. 15.5.2 导入和一致性
  312. 15.5.3 直接模式导入
  313. 15.6 使用导入的数据
  314. 15.7 导入大对象
  315. 15.8 执行导出
  316. 15.9 深入了解导出功能
  317. 15.9.1 导出与事务
  318. 15.9.2 导出和SequenceFile
  319. 第16章 实例学习
  320. 16.1 Hadoop 在Last.fm的应用
  321. 16.1.1 Last.fm:社会音乐史上的革命
  322. 16.1.2 Hadoop在Last.fm中的应用
  323. 16.1.3 用Hadoop制作图表
  324. 16.1.4 Track Statistics程序
  325. 16.1.5 总结
  326. 16.2 Hadoop和Hive在Facebook的应用
  327. 16.2.1 Hadoop在Facebook的使用
  328. 16.2.2 虚构的使用样例
  329. 16.2.3 Hive
  330. 16.2.4 存在的问题与未来工作计划
  331. 16.3 Nutch搜索引擎
  332. 16.3.1 背景介绍
  333. 16.3.2 数据结构
  334. 16.3.3 Nutch系统利用Hadoop进行数据处理的精选实例
  335. 16.3.4 总结
  336. 16.4 Rackspace的日志处理
  337. 16.4.1 要求/问题
  338. 16.4.2 简史
  339. 16.4.3 选择Hadoop
  340. 16.4.4 收集和存储
  341. 16.4.5 对日志的MapReduce处理
  342. 16.5 关于Cascading
  343. 16.5.1 字段、元组和管道
  344. 16.5.2 操作
  345. 16.5.3 Tap、Scheme和Flow
  346. 16.5.4 Cascading实战
  347. 16.5.5 灵活性
  348. 16.5.6 Hadoop和Cascading在ShareThis的应用
  349. 16.5.7 总结
  350. 16.6 Apache Hadoop上万亿数量级排序
  351. 16.7 用Pig和Wukong探索10亿数量级边的网络图
  352. 16.7.1 社区判断
  353. 16.7.2 每个人都在和我说话:Twitter回复关系图
  354. 16.7.3 对称链接
  355. 16.7.4 社区提取
  356. 附录A 安装Apache Hadoop
  357. 附录B 关于CDH
  358. 附录C 准备NCDC气象数据
书名:Hadoop权威指南(第3版)
作者:Tom White
译者:华东师范大学数据科学与工程学院 译
国内出版社:清华大学出版社
出版时间:2014年10月
页数:678
书号:978-7-302-37085-7
原版书书名:Hadoop: The Definitive Guide, third edition
原版书出版商:O'Reilly Media
Tom White
 
自从 2007 年 2 月以来,Tom White 一直担任 Apache Hadoop 项目负责人。他是 Apache 软件基金会的成员之一。他就职于 Cloudera,该公司提供 Hadoop 产品、服 务、支持和培训服务。在此之前,Tom 是一名独立的 Hadoop 顾问,曾帮助很多公 司搭建、使用和扩展 Hadoop 应用。他曾为 O’Reilly.com,Java.net 和 IBM 的 developerWorks 写过大量文章,并定期在行业大会上发表 Hadoop 主题演讲。Tom 拥有英国剑桥大学数学学士学位和利兹大学科学哲学硕士学位。现在,他和他的家 人居住在旧金山。