内容简介
Hadoop是一个开源的MapReduce平台,设计运行在大型分布式集群环境中,为开发者进行数据存储、管理以及分析提供便利的方法。本书详细讲解了Hadoop和MapReduce的基本概念,并收集了85个问题及其解决方案。在关键问题领域对基础概念和实战方法做了权衡。
目录
前言
致谢
关于本书
第1部分 背景和基本原理
1 跳跃中的Hadoop
1.1 什么是Hadoop
1.1.1 Hadoop 的核心组件
1.1.2 Hadoop 生态圈
1.1.3 物理架构
1.1.4 谁在使用Hadoop
1.1.5 Hadoop 的局限性
1.2 运行Hadoop
1.2.1 下载并安装Hadoop
1.2.2 Hadoop 的配置
1.2.3 CLI 基本命令
1.2.4 运行MapReduce 作业
1.3 本章小结
第2部分 数据逻辑
2 将数据导入导出Hadoop
2.1 导入导出的关键要素
2.2 将数据导入Hadoop
2.2.1 将日志文件导入Hadoop
技术点1 使用Flume 将系统日志文件导入HDFS
2.2.2 导入导出半结构化和二进制文件
技术点2 自动复制文件到HDFS 的机制
技术点3 使用Oozie 定期执行数据导入活动
2.2.3 从数据库中拉数据
技术点4 使用MapReduce 将数据导入数据库
技术点5 使用Sqoop 从MySQL 导入数据
2.2.4 Hbase
技术点6 Hbase 导入HDFS
技术点7 将Hbase 作为MapReduce 的数据源
2.3 将数据导出Hadoop
2.3.1 将数据导入本地文件系统
技术点8 自动复制HDFS 中的文件
2.3.2 数据库
技术点9 使用Sqoop 将数据导入MySQL
2.3.3 Hbase
技术点10 将数据从HDFS 导入Hbase
技术点11 使用Hbase 作为MapReduce 的数据接收器
2.4 本章小结
3 数据序列化——处理文本文件及其他格式的文件
3.1 了解MapReduce 中的输入和输出
3.1.1 数据输入
3.1.2 数据输出
……
第3部分 大数据模式
4 处理大数据的MapReduce 模式.
5 优化HDFS 处理大数据的技术
6 诊断和优化性能问题
第4部分 数据科学
7 数据结构和算法的运用
8 结合R 和Hadoop 进行数据统计
9 使用Mahout 进行预测分析
第5部分 驯服大象
10 深入解析 Hive
11 Pig 流管道
12 Crunch 及相关技术
13 测试和调试
附录A 相关技术
附录B Hadoop 内置的数据导入导出工具
附录C HDFS 解剖
附录D 优化MapReduce 合并框架
索引
摘要与插图
译者序在淘宝数据平台架构组工作了两年,深知一套Hadoop 平台从运维到开发实属不易。本书是一本实战性的书,讲的大多都是术,解决生产问题的术。通过阅读本书,读者可以较为轻松地完成环境搭建,故障诊断与解决,数据的开发等。阅读本书同样需要读者有一定的Hadoop 理论知识,否则只知其然不知其所以然。同时本书作者也强烈阅读Hadoop: The Definitive Guid 一书来深入了解Hadoop 原理。
《Hadoop 硬实战》中文译本的问世离不开朋友们的帮忙——梁李印(无影),数据平台Hadoop 专家,专攻MapReduce 框架开发,其维护的Hadoop 代码在7000多台节点的集群上日日夜夜地运行着;杨卓荦(卓荦),Hive 专家,每晚有上万个Hive 作业通过其维护的Hive 代码生成。
同时还要感谢平安科技、王鹏冲、张建龙对我工作上的支持,让我抽出更多时间来做其他的事情。感谢淘宝数据平台的王磊(泽远)、王勇(图海)、李庐阳(刘顺)、吴威(无畏)和其他同学,据说“双十一”的销售额已多达571 亿元,你们的股票涨了多少? 感谢思科合肥Grant Pan、Chris Gao、Liyang Tang,我想你们了。
宁青
2014 年11 月11 日于观澜湖畔
前言
我是在2008 年秋天参加VeriSign 的互联网抓取和分析项目的时候开始接触Hadoop 的,我的团队与Doug Cutting 以及Nutch 项目的人就如何有效地存储和管理TB 级的抓取数据和分析数据得出相似的结论。当时我们已经建立了自己的分布式系统,但是这个系统无法系统地将抓取的数据与新添加的数据合并。
在研究了Hadoop 项目后,我们发现它很适合我们的需求——它支持大数据存储,并提供数据合并机制。在几个月的时间内,我们创建并开发了包含多个MapReduce 作业的MapReduce 应用,并将这个应用与我们自己的MapReduce 工作流管理系统部署在一个拥有18 个节点的小集群上。通过这个小集群可以观察我们的MapReduce 作业是如何在几分钟内处理完数据的。当然,我们没想到的是,在调试和优化MapReduce 作业上会花费这么多时间;更没想到的是,我们担负起生产管理员这一新职责时,在支持生产的头几个月内我们遇到大量的磁盘故障问题。
随着对Hadoop 熟悉程度的提高,我们运用Hadoop 继续建立了更多的功能以帮助处理大规模数据集。我们还开始在公司内部宣传Hadoop 的优点,并发动其他面临处理大数据的项目使用Hadoop。在运用Hadoop(尤其是在处理MapReduce 时)的过程中我们遇到的挑战是重新学习如何使用它解决问题。MapReduce 有自己并行处理进程的方法,这种处理方式与我们通常使用的JVM 程序不同。的障碍就是训练我们的大脑去熟悉MapReduce 的处理方法,Chuck Lam 在2010 年编写出版的Hadoop in Action 一书详细讲解了MapReduce 的相关信息。
当你习惯了使用MapReduce 后,接下来就需要学习如何使用Hadoop,如何将数据导入和导出HDFS,如何在Hadoop 中处理数据。Hadoop 的这些方面还没有引起很广泛的关注,这也是我要撰写本书的潜在原因——主要介绍Hadoop 的一些应用,并涉及Hadoop 的一些难点问题。
我相信目前已经有很多读者有Hadoop 的相关应用经验,我写本书的目的只是为了将我的个人经验转化为书本知识。我对本书中的实例进行了验证,这并不是一个愉快的过程,但是编写本书的过程中所运用到的新方法和工具使我对Hadoop 有了进一步的了解,希望读者通过本书可以获取Hadoop 的更多知识。
先,我感谢的是推举我写这本书的Michael Noll,他也是收到本书的样本的,并帮忙修改了本书的组织结构。在编写本书的过程中,他对我的支持和鼓舞程度无法用言语形容。
我还要感谢本书的策划编辑Cynthia Kane