前言
数学科普作家马丁·加德纳(Martin Gardner)曾在一次采访中谈到:
“在我的世界里,只有微积分。这是我的专栏 取得成功奥秘。我花了很多时间才明白如何以大多数读者都能明白的方式将自己所知道的东西娓娓道来。”
这也是我对Hadoop的诸多感受。它的内部工作机制非常复杂,是一个集分布式系统理论、实际工程和常识于一体的系统。而且,对门外汉而言,Hadoop更像是“天外来客”。
但Hadoop其实并没有那么让人费解,抽丝剥茧,我们来看它的“庐山真面目”。它提供的用于构建分布式系统的每个工具(用于数据存储、数据分析和协调处理)都非常简单。如果说这些工具有一个共同的主题,那就是它们更抽象,对偶尔有大量数据需要存储的程序员、有大量数据需要分析的程序员、有大量计算机需要管理的程序员同时却没有足够的时间、技能或者不想成为分布式系统专家的程序员提供一套组件,使其能够利用Hadoop来构建基础平台。
这样一个简单、通用的特性集,促使我在开始使用Hadoop时便明显感觉到Hadoop真的值得推广。但最开始的时候(2006年初),安装、配置和Hadoop应用编程是一门高深的艺术。之后,情况确实有所改善:文档增多了;示例增多了;碰到问题时,可以向大量活跃的邮件列表发邮件求助。对新手而言,最大的障碍是理解Hadoop有哪些能耐,它擅长什么,它如何使用。这些问题使我萌发了写作本书的动机。
Apache Hadoop社区的发展来之不易。在过去的三年多时间里,Hadoop项目开花结果并孵化出大约半打子项目。到目前,它在性能、可靠性、可扩展性和可管理性方面都实现了巨大的飞跃。但是,为了让更多人采用Hadoop,我认为我们要让Hadoop更好用。这需要创建更多新的工具,集成更多的系统,创建新的、改进的API。我希望我自己能够参与,同时也希望本书能够鼓励并吸引其他人也参与Hadoop项目。
作者简介
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 模式
......
内容摘要
准备好释放数据的强大潜能了吗?借助于这本本书,你将学习如何使用ApacheHadoop构建和维护稳定性高、伸缩性强的分布式系统。本书是为程序员写的,可帮助他们分析任何大小的数据集。本书同时也是为管理员写的,帮助他们了解如何设置和运行Hadoop集群。
本书通过丰富的案例学习来解释Hadoop的幕后机理,阐述了Hadoop如何解决现实生活中的具体问题。第3版覆盖Hadoop的新动态,包括新增的MapReduceAPI,以及MapReduce2及其灵活性更强的执行模型(YARN)。
主编推荐
新版新特色,内容更详细,更适合收藏和找Hadoop之父签名儿!
以下为对购买帮助不大的评价