本书作者基于对Hadoop系统的实践,深入浅出地对Hadoop进行了详细的讲解,包含大量的实例和技巧,可帮助有一定基础的开发者快速掌握分布式系统。主要内容包括:第1章~第4章讲解大数据系统的基本概念、Hadoop系统的关键概念,以及进行Hadoop平台管理的关键概念要素。第5章~第7章是本书的重点,深入分析了MapReduce框架,不仅包括MapReduce框架的API,还介绍MapReduce框架的更复杂概念及其设计理念。第8章~第14章介绍Hadoop生态系统,包括支持MapReduce程序的单元测试和集成测试框架、Hadoop系统的监控和日志系统、Hive框架、Pig和Crunch框架、HCatalog框架、Hadoop日志流处理、HBase等。第15章~第17章介绍了数据科学基本概念及应用、云计算实例、分布式下载服务实例等。
目 录 Contents
译者序
作者简介
前言
第1章为什么会有大数据
1.1什么是大数据
1.2大数据技术背后的核心思想
1.2.1把数据分发到多个节点
1.2.2把计算逻辑移动到数据附近
1.2.3计算节点进行本地数据处理
1.2.4优选顺序读,次之随机读
1.2.5一个例子
1.3大数据的编程模型
1.3.1大规模并行处理数据库系统
1.3.2内存数据库系统
1.3.3MapReduce系统
1.3.4整体同步并行系统
1.4大数据和事务性系统
1.5我们能处理多大的数据量
1.5.1一个计算密集型的例子
1.5.2Amdhal定律
1.6大数据商业用例
1.7本章小结
第2章Hadoop中的概念
2.1Hadoop简介
2.2MapReduce编程模型简介
2.3Hadoop系统的组成
2.3.1Hadoop 分布式文件系统
2.3.2辅助名称节点
2.3.3任务跟踪器
2.3.4作业跟踪器
2.4Hadoop 2.
2.4.1容器
2.4.2节点管理器
2.4.3资源管理器
2.4.4应用程序管理器
2.4.5分步详解YARN请求
2.5HDFS 的高可用性
2.6本章小结
第3章初识Hadoop框架
3.1安装类型
3.1.1单机模式
3.1.2伪分布式集群模式
3.1.3多节点集群安装模式
3.1.4基于Amazon EMR预安装模式
3.2使用Cloudera虚拟机搭建开发环境
3.3一个MapReduce程序的组成
3.4第一个Hadoop程序
3.4.1以本地模式运行程序的必要条件
3.4.2使用旧API编写的单词计数程序
3.4.3构建程序
3.4.4在集群模式下运行单词计数程序
3.4.5使用新API编写的单词计数程序
3.4.6构建程序
3.4.7在集群模式下运行单词计数程序
3.5Hadoop作业中的第三方函数库
3.6本章小结
第4章Hadoop系统管理
4.1Hadoop的配置文件
4.2配置Hadoop守护进程
4.3Hadoop配置文件的优先级
4.4深入探究Hadoop配置文件
4.4.1coresite.xml
4.4.2hdfs*.xml
4.4.3mapredsite.xml
4.4.4yarnsite.xml
4.4.5YARN中的内存分配
4.5调度器
4.5.1计算能力调度器
4.5.2公平调度器
4.5.3公平调度器配置
4.5.4 yarnsite.xml 配置
4.5.5策略文件的格式和配置
4.5.6按照drf策略来确定优势资源的分配
4.6从属文件
4.7机架感知
4.8 集群管理工具
4.8.1检查HDFS
4.8.2 HDFS管理命令行
4.8.3 均衡HDFS上的数据分布
4.8.4从HDFS中复制海量数据
4.9本章小结
第5章MapReduce开发基础
5.1 Hadoop和数据处理
5.2 航空公司数据集介绍
5.2.1 准备开发环境
5.2.2 准备Hadoop系统
5.3 MapReduce编程模式
5.3.1 只有Map阶段的作业(SELECT和WHERE查询)
5.3.2 问题定义―SELECT子句
5.3.3 问题定义―WHERE子句
5.3.4 Map和Reduce作业(聚合查询)
5.3.5 问题定义―GROUP BY和SUM子句
5.3.6 应用Combiner提高Aggregation性能
5.3.7 问题定义―优化后的Aggregators
5.3.8 Partitioner的作用
5.3.9 问题定义―按月分离航空数据
5.4 综合分析
5.5 本章小结
第6章MapReduce开发进阶
6.1 MapReduce编程模式
6.2 Hadoop I/O 介绍
6.3 问题定义―排序
6.3.1 主要挑战:全排序
6.3.2 在Cluster中运行Sorting作业
6.3.3 仅根据Writable键排序
6.3.4 根据排序回顾Hadoop的关键特性
6.4 问题定义―分析连续的记录
6.4.1 支持二次排序的重要组件
6.4.2 在没有Grouping Comparator的情况下实现Secondary Sort
6.4.3 在Cluster中运行SecondarySort作业
6.4.4 利用Secondary Sort回顾Hadoop的关键特性
6.5 问题定义―使用MapReducer进行连接
6.5.1 处理多输入:MultipleInputs 类
6.5.2 具备多个输入的Mapper类
6.5.3 自定义 Partitioner: CarrierCodeBasedPartioner
6.5.4 在Reducer中实现连接
6.5.5 在集群中运行MapReduce连接作业
6.5.6 探讨与MapReduce相关的Hadoop主要特性
6.6 问题定义―使用MapOnly 作业进行连接
6.6.1 基于DistributeCache的解决方案
6.6.2 在集群中运行MapOnly的连接作业
6.6.3 总结探讨MapOnly连接时的Hadoop关键特性
6.7 在MR作业中保存结果到多输出文件
6.8 使用计数器收集统计数据
6.9 本章小结
第7章 Hadoop输入/输出
7.1 压缩方式
7.1.1 压缩内容的选择
7.1.2 各种压缩方式
7.1.3 配置压缩方式
7.2 Hadoop的I/O处理过程内部
7.2.1 Inputformat
7.2.2 OutputFormat
7.2.3 自定义OutputFormat:将文本转换成XML
7.2.4 自定义 InputFormat:使用自定义的XML文件
7.3 Hadoop文件
7.3.1 SequenceFile
7.3.2 MapFiles
7.3.3 Avro Files
7.4 本章小结
第8章 测试Hadoop程序
8.1 回顾一下单词统计的程序
8.2 MRUnit概述
8.2.1 安装MRUnit
8.2.2 MRUnit 核心类
8.2.3 编写一个MRUnit测试用例
8.2.4 测试计数器
8.2.5 MRUnit的特性
8.2.6 MRUnit的局限性
8.3 用LocalJobRunner测试
8.3.1 setUp( )方法
8.3.2 LocalJobRunner的局限性
8.4 用MiniMRCluster测试
8.4.1 配置开发环境
8.4.2 MiniMRCluster例子
8.4.3 MiniMRCluster的局限性
8.5 对访问网络资源的MR作业进行测试
8.6 本章小结
第9章Hadoop的监控
9.1 在Hadoop MapReduce Jobs中写日志消息
9.2 在Hadoop MapReduce Jobs中查看日志消息
9.3 在Hadoop 2.x中使用日志管理
9.3.1 Hadoop 2.x中的日志存储
9.3.2 日志管理提升
9.3.3 使用基于Web的界面查看日志
9.3.4 命令行界面
9.3.5 日志的保存
9.4 Hadoop集群性能监控
9.5 使用YARN REST API
9.6 使用供应商工具管理Hadoop集群
9.7 本章小结
第10章使用Hadoop构建数据仓库
10.1 Apache Hive
10.1.1 安装Hive
10.1.2 Hive的架构
10.1.3 元数据存储
10.1.4 HiveQL编译基础
10.1.5 Hive使
……
第11章 使用Pig进行数据处理
第12章 HCatalog和企业级Hadoop
第13章 使用Hadoop分析日志
第14章 使用HBase构建实时系统
第15章 Hadoop与数据科学
第16章 Hadoop与云计算
第17章 构建YARN应用程序
附录