前 言
基 础 篇
第1章 认识Hadoop
1.1 缘于搜索的小象
1.1.1 Hadoop的身世
1.1.2 Hadoop简介
1.1.3 Hadoop发展简史
1.2 大数据、Hadoop和云计算
1.2.1 大数据
1.2.2 大数据、Hadoop和云计算的关系
1.3 设计思想与架构
1.3.1 数据存储与切分
1.3.2 MapReduce模型
1.3.3 MPI和MapReduce
1.4 国外Hadoop的应用现状
1.5 国内Hadoop的应用现状
1.6 Hadoop发行版
1.6.1 Apache Hadoop
1.6.2 Cloudera Hadoop
1.6.3 Hortonworks Hadoop发行版
1.6.4 MapR Hadoop发行版
1.6.5 IBM Hadoop发行版
1.6.6 Intel Hadoop发行版
1.6.7 华为Hadoop发行版
1.7 小结
第2章 Hadoop使用之初体验
2.1 搭建测试环境
2.1.1 软件与准备
2.1.2 安装与配置
2.1.3 启动与停止
2.2 算法分析与设计
2.2.1 Map设计
2.2.2 Reduce设计
2.3 实现接口
2.3.1 Java API实现
2.3.2 Streaming接口实现
2.3.3 Pipes接口实现
2.4 编译
2.4.1 基于Java API实现的编译
2.4.2 基于Streaming实现的编译
2.4.3 基于Pipes实现的编译
2.5 提交作业
2.5.1 基于Java API实现作业提交
2.5.2 基于Streaming实现作业提交
2.5.3 基于Pipes实现作业提交
2.6 小结
第3章 Hadoop存储系统
3.1 基本概念
3.1.1 NameNode
3.1.2 DateNode
3.1.3 客户端
3.1.4 块
3.2 HDFS的特性和目标
3.2.1 HDFS的特性
3.2.2 HDFS的目标
3.3 HDFS架构
3.3.1 Master/Slave架构
3.3.2 NameNode和Secondary NameNode通信模型
3.3.3 文件存取机制
3.4 HDFS核心设计
3.4.1 Block大小
3.4.2 数据复制
3.4.3 数据副本存放策略
3.4.4 数据组织
3.4.5 空间回收
3.4.6 通信协议
3.4.7 安全模式
3.4.8 机架感知
3.4.9 健壮性
3.4.10 负载均衡
3.4.11 升级和回滚机制
3.5 HDFS权限管理
3.5.1 用户身份
3.5.2 系统实现
3.5.3 超级用户
3.5.4 配置参数
3.6 HDFS配额管理
3.7 HDFS的缺点
3.8 小结
第4章 HDFS的使用
4.1 HDFS环境准备
4.1.1 HDFS安装配置
4.1.2 HDFS格式化与启动
4.1.3 HDFS运行检查
4.2 HDFS命令的使用
4.2.1 fs shell
4.2.2 archive
4.2.3 distcp
4.2.4 fsck
4.3 HDFS Java API的使用方法
4.3.1 Java API简介
4.3.2 读文件
4.3.3 写文件
4.3.4 删除文件或目录
4.4 C接口libhdfs
4.4.1 libhdfs介绍
4.4.2 编译与部署
4.4.3 libhdfs接口介绍
4.4.4 libhdfs使用举例
4.5 WebHDFS接口
4.5.1 WebHDFS REST API简介
4.5.2 WebHDFS配置
4.5.3 WebHDFS使用
4.5.4 WebHDFS错误响应和查询参数
4.6 小结
第5章 MapReduce计算框架
5.1 Hadoop MapReduce简介
5.2 MapReduce模型
5.2.1 MapReduce编程模型
5.2.2 MapReduce实现原理
5.3 计算流程与机制
5.3.1 作业提交和初始化
5.3.2 Mapper
5.3.3 Reducer
5.3.4 Reporter和OutputCollector
5.4 MapReduce的输入/输出格式
5.4.1 输入格式
5.4.2 输出格式
5.5 核心问题
5.5.1 Map和Reduce数量
5.5.2 作业配置
5.5.3 作业执行和环境
5.5.4 作业容错机制
5.5.5 作业调度
5.6 有用的MapReduce特性
5.6.1 计数器
5.6.2 DistributedCache
5.6.3 Tool
5.6.4 IsolationRunner
5.6.5 Prof?iling
5.6.6 MapReduce调试
5.6.7 数据压缩
5.6.8 优化
5.7 小结
第6章 Hadoop命令系统
6.1 Hadoop命令系统的组成
6.2 用户命令
6.3 管理员命令
6.4 测试命令
6.5 应用命令
6.6 Hadoop的streaming命令
6.6.1 streaming命令
6.6.2 参数使用分析
6.7 Hadoop的pipes命令
6.7.1 pipes命令
6.7.2 参数使用分析
6.8 小结
高 级 篇
第7章 MapReduce深度分析
7.1 MapReduce总结构分析
7.1.1 数据流向分析
7.1.2 处理流程分析
7.2 MapTask实现分析
7.2.1 总逻辑分析
7.2.2 Read阶段
7.2.3 Map阶段
7.2.4 Collector和Partitioner阶段
7.2.5 Spill阶段
7.2.6 Merge阶段
7.3 ReduceTask实现分析
7.3.1 总逻辑分析
7.3.2 Shuffle阶段
7.3.3 Merge阶段
7.3.4 Sort阶段
7.3.5 Reduce阶段
7.4 JobTracker分析
7.4.1 JobTracker服务分析
7.4.2 JobTracker启动分析
7.4.3 JobTracker核心子线程分析
7.5 TaskTracker分析
7.5.1 TaskTracker启动分析
7.5.2 TaskTracker核心子线程分析
7.6 心跳机制实现分析
7.6.1 心跳检测分析
7.6.2 TaskTracker.transmitHeart-Beat()
7.6.3 JobTracker.heartbeat()
7.6.4 JobTracker.processHeartbeat()
7.7 作业创建分析
7.7.1 初始化分析
7.7.2 作业提交分析
7.8 作业执行分析
7.8.1 JobTracker初始化
7.8.2 TaskTracker.startNewTask()
7.8.3 TaskTracker.localizeJob()
7.8.4 TaskRunner.run()
7.8.5 MapTask.run()
7.9 小结
第8章 Hadoop Streaming和Pipes原理与实现
8.1 Streaming原理浅析
8.2 Streaming实现架构
8.3 Streaming核心实现机制
8.3.1 主控框架实现
8.3.2 用户进程管理
8.3.3 框架和用户程序的交互
8.3.4 PipeMapper和PiperReducer
8.4 Pipes原理浅析
8.5 Pipes实现架构
8.6 Pipes核心实现机制
8.6.1 主控类实现
8.6.2 用户进程管理
8.6.3 PipesMapRunner
8.6.4 PipesReducer
8.6.5 C++端HadoopPipes
8.7 小结
第9章 Hadoop作业调度系统
9.1 作业调度概述
9.1.1 相关概念
9.1.2 作业调度流程
9.1.3 集群资源组织与管理
9.1.4 队列控制和权限管理
9.1.5 插件式调度框架
9.2 FIFO调度器
9.2.1 基本调度策略
9.2.2 FIFO实现分析
9.2.3 FIFO初始化与停止
9.2.4 作业监听控制
9.2.5 任务分配算法
9.2.6 配置与使用
9.3 公平调度器
9.3.1 产生背景
9.3.2 主要功能
9.3.3 基本调度策略
9.3.4 FairScheduler实现分析
9.3.5 FairScheduler启停分析
9.3.6 作业监听控制
9.3.7 资源池管理
9.3.8 作业更新策略
9.3.9 作业权重和资源量的计算
9.3.10 任务分配算法
9.3.11 FairScheduler配置参数
9.3.12 使用与管理
9.4 容量调度器
9.4.1 产生背景
9.4.2 主要功能
9.4.3 基本调度策略
9.4.4 CapacityScheduler实现分析
9.4.5 CapacityScheduler启停分析
9.4.6 作业监听控制
9.4.7 作业初始化分析
9.4.8 任务分配算法
9.4.9 内存匹配机制
9.4.10 配置与使用
9.5 调度器对比分析
9.5.1 调度策略对比
9.5.2 队列和优先级
9.5.3 资源分配保证
9.5.4 作业限制
9.5.5 配置管理
9.5.6 扩展性支持
9.5.7 资源抢占和延迟调度
9.5.8 优缺点分析
9.6 其他调度器
9.6.1 HOD调度器
9.6.2 LATE调度器
9.7 小结
实 战 篇
第10章 Hadoop集群搭建
10.1 Hadoop版本的选择
10.2 集群基础硬件需求
10.2.1 内存
10.2.2 CPU
10.2.3 磁盘
10.2.4 网卡
10.2.5 网络拓扑
10.3 集群基础软件需求
10.3.1 操作系统
10.3.2 JVM和SSH
10.4 虚拟化需求
10.5 事前准备
10.5.1 创建安装用户
10.5.2 安装Java
10.5.3 安装SSH并设置
10.5.4 防火墙端口设置
10.6 安装Hadoop
10.6.1 安装HDFS
10.6.2 安装MapReduce
10.7 集群配置
10.7.1 配置管理
10.7.2 环境变量配置
10.7.3 核心参数配置
10.7.4 HDFS参数配置
10.7.5 MapReduce参数配置
10.7.6 masters和slaves配置
10.7.7 客户端配置
10.8 启动和停止
10.8.1 启动/停止HDFS
10.8.2 启动/停止MapReduce
10.8.3 启动验证
10.9 集群基准测试
10.9.1 HDFS基准测试
10.9.2 MapReduce基准测试
10.9.3 综合性能测试
10.10 集群搭建实例
10.10.1 部署策略
10.10.2 软件和硬件环境
10.10.3 Hadoop安装
10.10.4 配置core-site.xml
10.10.5 配置hdfs-site.xml
10.10.6 配置mapred-site.xml
10.10.7 SecondaryNameNode和Slave
10.10.8 配置作业队列
10.10.9 配置第三方调度器
10.10.10 启动与验证
......