产品特色
编辑推荐
新版新特色,内容更详细,更适合收藏和找Hadoop之父签名儿!
内容简介
准备好释放数据的强大潜能了吗?借助于这本本书,你将学习如何使用ApacheHadoop构建和维护稳定性高、伸缩性强的分布式系统。本书是为程序员写的,可帮助他们分析任何大小的数据集。本书同时也是为管理员写的,帮助他们了解如何设置和运行Hadoop集群。
本书通过丰富的案例学习来解释Hadoop的幕后机理,阐述了Hadoop如何解决现实生活中的具体问题。第3版覆盖Hadoop的新动态,包括新增的MapReduceAPI,以及MapReduce2及其灵活性更强的执行模型(YARN)。
作者简介
Tom White,数学王子&Hadoop;专家。身为Apache Hadoop提交者八年之久,Apache软件基金会成员之一。全球知名云计算公司Cloudera的软件工程师。Tom拥有英国剑桥大学数学学士学位和利兹大学科学哲学硕士学位。
目录
第1章 初识Hadoop
1.1 数据!数据!
1.2 数据的存储与分析
1.3 相较于其他系统的优势
1.3.1 关系型数据库管理系统
1.3.2 网格计算
1.3.3 志愿计算
1.4 Hadoop发展简史
1.5 Apache Hadoop和Hadoop生态系统
1.6 Hadoop的发行版本
1.6.1 本书包含的内容
1.6.2 兼容性
第2章 关于MapReduce
2.1 气象数据集
2.2 使用Unix工具来分析数据
2.3 使用Hadoop来分析数据
2.3.1 map和reduce
2.3.2 Java MapReduce
2.4 横向扩展
2.4.1 数据流
2.4.2 combiner函数
2.4.3 运行分布式的MapReduce作业
2.5 Hadoop Streaming
2.5.1 Ruby版本
2.5.2 Python版本
2.6 Hadoop Pipes
第3章 Hadoop分布式文件系统
3.1 HDFS的设计
3.2 HDFS的概念
3.2.1 数据块
3.2.2 namenode和datanode
3.2.3 联邦HDFS
3.2.4 HDFS的高可用性
3.3 命令行接口
3.4 Hadoop文件系统
3.5 Java接口
3.5.1 从Hadoop URL读取数据
3.5.2 通过FileSystem API读取数据
3.5.3 写入数据
3.5.4 目录
3.5.5 查询文件系统
3.5.6 删除数据
3.6 数据流
3.6.1 剖析文件读取
3.6.2 剖析文件写入
3.6.3 一致模型
3.7 通过Flume和Sqoop导入数据
3.8 通过distcp并行复制
3.9 Hadoop存档
3.9.1 使用Hadoop存档工具
3.9.2 不足
第4章 Hadoop的I/O操作
4.1 数据完整性
4.1.1 HDFS的数据完整性
4.1.2 LocalFileSystem
4.1.3 ChecksumFileSystem
4.2 压缩
4.2.1 codec
4.2.2 压缩和输入分片
4.2.3 在MapReduce中使用压缩
4.3 序列化
4.3.1 Writable接口
4.3.2 Writable类
4.3.3 实现定制的Writable集合
4.3 序列化框架
4.4 Avro
4.4.1 Avro数据类型和模式
4.4.2 内存中的序列化和反序列化
4.4.3 Avro数据文件
4.4.4 互操作性
4.4.5 模式的解析
4.4.6 排列顺序
4.4.7 关于Avro MapReduce
4.4.8 使用Avro MapReduce进行排序
4.4.9 其他语言的Avro MapReduce
4.5 基于文件的数据结构
4.5.1 关于SequenceFile
4.5.2 关于MapFile
第5章 MapReduce应用开发
5.1 用于配置的API
5.1.1 资源合并
5.1.2 可变的扩展
5.2 配置开发环境
5.2.1 管理配置
5.2.2 辅助类GenericOptionsParser,Tool和ToolRunner
5.3 用MRUnit来写单元测试
5.3.1 关于Mapper
5.3.2 关于Reducer
5.4 本地运行测试数据
5.4.1 在本地作业运行器上运行作业
5.4.2 测试驱动程序
5.5 在集群上运行
5.5.1 打包作业
5.5.2 启动作业
5.5.3 MapReduce的Web界面
5.5.4 获取结果
5.5.5 作业调试
5.5.6 Hadoop日志
5.5.7 远程调试
5.6 作业调优
5.7 MapReduce的工作流
5.7.1 将问题分解成MapReduce作业
5.7.2 关于JobControl
5.7.3 关于Apache Oozie
第6章 MapReduce的工作机制
6.1 剖析MapReduce作业运行机制
6.1.1 经典的MapReduce (MapReduce 1)
6.1.2 YARN (MapReduce 2)
6.2 失败
6.2.1 经典MapReduce中的失败
6.2.2 YARN中的失败
6.3 作业的调度
6.3.1 公平调度器
6.3.2 容量调度器
6.4 shuffle和排序
6.4.1 map端
6.4.2 reduce端
6.4.3 配置调优
6.5 任务的执行
6.5.1 任务执行环境
6.5.2 推测执行
6.5.3 关于OutputCommitters
6.5.4 任务JVM重用
6.5.5 跳过坏记录
第7章 MapReduce的类型与格式
7.1 MapReduce的类型
7.1.1 默认的MapReduce作业
7.1.2 默认的Streaming作业
7.2 输入格式
7.2.1 输入分片与记录
7.2.2 文本输入
7.2.3 二进制输入
7.2.4 多个输入
7.2.5 数据库输入(和输出)
7.3 输出格式
7.3.1 文本输出
7.3.2 二进制输出
7.3.3 多个输出
7.3.4 延迟输出
7.3.5 数据库输出
第8章 MapReduce的特性
8.1 计数器
8.1.1 内置计数器
8.1.2 用户定义的Java计数器
8.1.3 用户定义的Streaming计数器
8.2 排序
8.2.1 准备
8.2.2 部分排序
8.2.3 全排序
8.2.4 辅助排序
8.3 连接
8.3.1 map端连接
8.3.2 reduce端连接
8.4 边数据分布
8.4.1 利用JobConf来配置作业
8.4.2 分布式缓存
8.5 MapReduce库类
第9章 构建Hadoop集群
9.1 集群规范
9.2 集群的构建和安装
9.2.1 安装Java
9.2.2 创建Hadoop用户
9.2.3 安装Hadoop
9.2.4 测试安装
9.3 SSH配置
9.4 Hadoop配置
9.4.1 配置管理
9.4.2 环境设置
9.4.3 Hadoop守护进程的关键属性
9.4.4 Hadoop守护进程的地址和端口
9.4.5 Hadoop的其他属性
9.4.6 创建用户帐号
9.5 YARN配置
9.5.1 YARN守护进程的重要属性
9.5.2 YARN守护进程的地址和端口
9.6 安全性
9.6.1 Kerberos和Hadoop
9.6.2 委托令牌
9.6.3 其他安全性改进
9.7 利用基准评测程序测试Hadoop集群
9.7.1 Hadoop基准评测程序
9.7.2 用户作业
9.8 云端的Hadoop
第10章 管理Hadoop
10.1 HDFS
10.1.1 永久性数据结构
10.1.2 安全模式
10.1.3 日志审计
10.1.4 工具
10.2 监控
10.2.1 日志
10.2.2 度量
10.2.3 Java管理扩展(JMX)
10.3 维护
10.3.1 日常管理过程
10.3.2 委任和解除节点
10.3.3 升级
第11章 关于Pig
11.1 安装与运行Pig
11.1.1 执行类型
11.1.2 运行Pig程序
11.1.3 Grunt
11.1.4 Pig Latin编辑器
11.2 示例
11.3 与数据库进行比较
11.4 Pig Latin
11.4.1 结构
11.4.2 语句
11.4.3 表达式
11.4.4 类型
11.4.5 模式
11.4.6 函数
11.4.7 宏
11.5 用户自定义函数
11.5.1 过滤UDF
11.5.2 计算UDF
11.5.3 加载UDF
11.6 数据处理操作
11.6.1 数据的加载和存储
11.6.2 数据的过滤
11.6.3 数据的分组与连接
11.6.4 数据的排序
11.6.5 数据的组合和切分
11.7 Pig实战
11.7.1 并行处理
11.7.2 参数代换
第12章 关于Hive
12.1 安装Hive
12.2 示例
12.3 运行Hive
12.3.1 配置Hive
12.3.2 Hive服务
12.3.3 Metastore
12.4 Hive与传统数据库相比
12.4.1 读时模式vs.写时模式
12.4.2 更新、事务和索引
12.5 HiveQL
12.5.1 数据类型
12.5.2 操作与函数
12.6 表
12.6.1 托管表和外部表
12.6.2 分区和桶
12.6.3 存储格式
12.6.4 导入数据
12.6.5 表的修改
12.6.6 表的丢弃
12.7 查询数据
12.7.1 排序和聚集
12.7.2 MapReduce脚本
12.7.3 连接
12.7.4 子查询
12.7.5 视图
12.8 用户定义函数
12.8.1 写UDF
12.8.2 写UDAF
第13章 关于HBase
13.1 HBase基础
13.2 概念
13.3.1 数据模型的"旋风之旅"
13.3.2 实现
13.3 安装
13.4 客户端
13.4.1 Java
13.4.2 Avro、REST和Thrift
13.5 示例
13.5.1 模式
......
精彩书摘
初识Hadoop
在古时候,人们用牛来拉重物。当一头牛拉不动一根圆木时,人们从来没有考虑过要培育更强壮的牛。同理,我们也不该想方设法打造超级计算机,而应该千方百计综合利用更多计算机来解决问题。
——格蕾斯·霍珀(Grace Hopper)
1.1 数据!数据!
我们生活在这个数据大爆炸的时代,很难估算全球电子设备中存储的数据总共有多少。国际数据公司(IDC)曾经发布报告称,2006年数字世界(digital universe)项目统计得出全球数据总量为0.18 ZB并预测在2011年将达到1.8 ZB。 1 ZB等于1021字节,等于1000 EB(exabytes),1 000 000 PB (petabytes),等于大家更熟悉的10亿TB(terrabytes)!这相当于全世界每人一个硬盘中保存的数据总量!
数据“洪流”有很多来源。以下面列出的为例:
纽约证交所每天产生的交易数据多达1 TB
脸谱网(Facebook)存储的照片约100 亿张,存储容量约为 1 PB
家谱网站Ancestry.com存储的数据约为2.5 PB
互联网档案馆(The Internet Archive)存储的数据约为2 PB,并以每月至少20 TB的速度持续增长
瑞士日内瓦附近的大型强子对撞机每年产生的数据约为15 PB
还有其他大量的数据。但是你可能会想它对自己又有哪些影响呢?地球人都知道,大部分数据都严密锁存在一些大型互联网公司(如搜索引擎公司)或科学机构与金融机构中。难道所谓的“大数据”只影响小机构和个人?
我个人是这样认为的。以照片为例,我妻子的爷爷是一个骨灰级的摄影爱好者。在成年之后,他一直都在拍照。他的整个相册,包括普通胶片、幻灯片、35mm胶片,在扫描成高分辨率的图片之后,大约有10 GB。相比之下,在2008年,我家用数码相机拍摄的照片总共有5 GB。对照爷爷的照片生成速度,我家是他老人家的35倍!并且,而且这个速度还在不断增长中,因为现在拍照片真的是越来越容易了。
有句话说得好:“大数据胜于好算法。” 意思是说对于某些应用 (譬如根据以往的偏好来推荐电影和音乐),不论算法有多牛,基于小数据的推荐效果往往都不如基于大量可用数据的一般算法的推荐效果。
现在,我们已经有了大量数据,这是个好消息。但不幸的是,我们必须想方设法好好地存储和分析这些数据。
1.2 数据的存储与分析
我们遇到的问题很简单:在硬盘存储容量多年来不断提升的同时,访问速度(硬盘数据读取速度)却没有与时俱进。1990年,一个普通硬盘可以存储1370 MB数据,传输速度为4.4 MB/s ,因此只需要5分钟就可以读完整个硬盘中的数据。20年过去了,1 TB的硬盘已然成为主流,但其数据传输速度约为100 MB/s,读完整个硬盘中的数据至少得花2.5个小时。
读完整个硬盘中的数据需要更长时间,写入数据就别提了。一个很简单的减少读取时间的办法是同时从多个硬盘上读数据。试想,如果我们有100个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完所有数据。
仅使用硬盘容量的1%似乎很浪费。但是我们可以存储100个数据集,每个数据集1 TB,并实现共享硬盘的读取。可以想象,用户肯定很乐于通过硬盘共享来缩短数据分析时间;并且,从统计角度来看,用户的分析工作都是在不同时间点进行的,所以彼此之间的干扰并不太大。
虽然如此,但要对多个硬盘中的数据并行进行读写数据,还有更多问题要解决。第一个需要解决的是硬件故障问题。一旦开始使用多个硬件,其中个别硬件就很有可能发生故障。为了避免数据丢失,最常见的做法是复制(replication):系统保存数据的复本(replica),一旦有系统发生故障,就可以使用另外保存的复本。例如,冗余硬盘阵列(RAID)就是按这个原理实现的,另外,Hadoop的文件系统(HDFS,Hadoop Distributed FileSystem)也是一类,不过它采取的方法稍有不同,详见后文的描述。
第二个问题是大多数分析任务需要以某种方式结合大部分数据来共同完成分析,即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据结合使用。各种分布式系统允许结合不同来源的数据进行分析,但保证其正确性是一个非常大的挑战。MapReduce提出一个编程模型,该模型抽象出这些硬盘读写问题并将其转换为对一个数据集(由键值对组成)的计算。后文将详细讨论这个模型,这样的计算由map和reduce两部分组成,而且只有这两部分提供对外的接口。与HDFS类似,MapReduce自身也有很高的可靠性。
简而言之,Hadoop为我们提供了一个可靠的共享存储和分析系统。HDFS实现数据的存储,MapReduce实现数据的分析和处理。虽然Hadoop还有其他功能,但HDFS和MapReduce是它的核心价值。
1.3 相较于其他系统的优势
MapReduce看似采用了一种蛮力方法。每个查询需要处理整个数据集或至少一个数据集的绝大部分。但反过来想,这也正是它的能力。MapReduce是一个批量查询处理器,能够在合理的时间范围内处理针对整个数据集的动态查询。它改变了我们对数据的传统看法,解放了以前只是保存在磁带和硬盘上的数据。它让我们有机会对数据进行创新。以前需要很长时间处理才能获得结果的问题,到现在变得顷刻之间就迎刃而解,同时还可以引发新的问题和新的见解。
例如,Rackspace公司的邮件部门Mailtrust就用Hadoop来处理邮件日志。他们写动态查询,想借此找出用户的地理分布。他们是这么描述的:“这些数据非常有用,我们每月运行一次MapReduce任务来帮助我们决定哪些Rackspace数据中心需要添加新的邮件服务器。”
通过整合好几百GB的数据,用MapReduce来分析这些数据,Rackspace的工程师从中发现了以前从来没有注意到的数据,甚至还运用这些信息来改善了现有的服务。第16章将详细介绍Rackspace公司内部是如何使用Hadoop的。
1.3.1 关系型数据库管理系统
为什么不能用数据库来对
Hadoop权威指南(第3版 修订版) [Hadoop: The Definitive Guide,3rd Edition] 下载 mobi epub pdf txt 电子书 格式
Hadoop权威指南(第3版 修订版) [Hadoop: The Definitive Guide,3rd Edition] 下载 mobi pdf epub txt 电子书 格式 2024
评分
☆☆☆☆☆
权威俩字,要买
评分
☆☆☆☆☆
很厚的一本书,可以啃很久了~
评分
☆☆☆☆☆
大减价买的100-50,前些日子买的亏了100-30和100-20.这次买了挺多,趁着复仇者联盟就快要上映了,赶紧买
评分
☆☆☆☆☆
经典图书,希望能坚持学完,并且学有所用,成功转行。
评分
☆☆☆☆☆
好不错还不错还不错好不错还不错还不错
评分
☆☆☆☆☆
hadoop学习必看书籍之一,对于了解hadoop有很好的帮助效果;
评分
☆☆☆☆☆
昨天买的书,今天就到了,京东物流是真的快!而且5.31有活动,买199减100,可以说是非常划算了
评分
☆☆☆☆☆
经典图书,无需赘言
评分
☆☆☆☆☆
包装完好。内容充实,发货快,快递服务态度好
Hadoop权威指南(第3版 修订版) [Hadoop: The Definitive Guide,3rd Edition] mobi epub pdf txt 电子书 格式下载 2024