内容简介
第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.3 MapReduce系统
1.3.4 整体同步并行系统
1.4 大数据和事务性系统
1.5 我们能处理多大的数据量
1.5.1 一个计算密集型的例子
1.5.2 Amdhal定律
1.6 大数据商业用例
1.7 本章小结
第2章 Hadoop中的概念
2.1 Hadoop简介
2.2 MapReduce编程模型简介
2.3 Hadoop系统的组成
2.3.1 Hadoop分布式文件系统
2.3.2 辅助名称节点
2.3.3 任务跟踪器
2.3.4 作业跟踪器
2.4 Hadoop 2.0
2.4.1 容器
2.4.2 节点管理器
2.4.3 资源管理器
2.4.4 应用程序管理器
2.4.5 分步详解YARN请求
2.5 HDFS的高可用性
2.6 本章小结
第3章 初识Hadoop框架
3.1 安装类型
3.1.1 单机模式
3.1.2 伪分布式集群模式
3.1.3 多节点集群安装模式
3.1.4 基于AmazonEMR预安装模式
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.5 Hadoop作业中的第三方函数库
3.6 本章小结
第4章 Hadoop系统管理
4.1 Hadoop的配置文件
4.2 配置Hadoop守护进程
4.3 Hadoop配置文件的优先级
4.4 深入探究Hadoop配置文件
4.4.1 core-site.xml
4.4.2 hdfs-*.xml
4.4.3 mapred-site.xml
4.4.4 yarn-site.xml
4.4.5 YARN中的内存分配
4.5 调度器
4.5.1 计算能力调度器
4.5.2 公平调度器
4.5.3 公平调度器配置
4.5.4 yarn-site.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 问题定义——GROUPBY和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中运行Secondary Sort作业
6.4.4 利用Secondary Sort回顾Hadoop的关键特性
6.5 问题定义——使用MapReducer进行连接
6.5.1 处理多输入:Multiple-Inputs类
6.5.2 具备多个输入的Mapper类
6.5.3 自定义Partitioner:Carrier-CodeBasedPartioner
6.5.4 在Reducer中实现连接
6.5.5 在集群中运行MapReduce连接作业
6.5.6 探讨与MapReduce相关的Hadoop主要特性
6.6 问题定义——使用Map-Only作业进行连接
6.6.1 基于DistributeCache的解决方案
6.6.2 在集群中运行Map-Only的连接作业
6.6.3 总结探讨Map-Only连接时的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使用的概念
10.1.6 HiveQL编译细节
10.1.7 数据定义语言
10.1.8 数据操作语言
10.1.9 扩展接口
10.1.10 Hive脚本
10.1.11 性能表现
10.1.12 整合MapReduce
10.1.13 创建分区
10.1.14 用户定义函数
10.2 Impala
10.2.1 Impala架构
10.2.2 Impala特性
10.2.3 Impala的局限
10.3 Shark
10.4 本章小结
第11章 使用Pig进行数据处理
11.1 Pig简介
11.2 运行Pig
11.2.1 在Grunt Shell中执行
11.2.2 执行Pig脚本
11.2.3 嵌入式Java程序
11.3 Pig Latin
11.3.1 Pig脚本中的注释
11.3.2 Pig语句的执行
11.3.3 Pig命令
11.4 UDF
11.4.1 Mapper中的Eval函数调用
11.4.2 Reducer中的Eval函数调用
11.4.3 编写并使用自定义Filter-Func
11.5 Pig与Hive对比
11.6 Crunch API
11.6.1 Crunch与Pig的区别
11.6.2 Crunch管道的例子
11.7 本章小结
第12章 HCatalog和企业级Hadoop
12.1 HCataolg和企业级数据仓库用户
12.2 HCatalog技术背景简介
12.2.1 HCatalog命令行接口
12.2.2 WebHCat
12.2.3 HCatalog的MapReduce接口
12.2.4 HCatalog的Pig接口
12.2.5 HCatalog通知接口
12.3 HCatalog的安全和认证机制
12.4 完整的解决方案
12.5 本章小结
第13章 使用Hadoop分析日志
13.1 日志文件分析应用
13.1.1 网络分析
13.1.2 安全规范与法务
13.1.3 监控和报警
13.1.4 物联网
13.2 分析步骤
13.2.1 载入
13.2.2 提取
13.2.3 可视化
13.3 Apache Flume
13.4 Netflix Suro
13.5 云解决方案
13.6 本章小结
第14章 使用HBase构建实时系统
14.1 HBase是什么
14.2 典型的HBase用例场景
14.3 HBase数据模型
14.3.1 HBase逻辑视图和客户端视图
14.3.2 HBase与RDBMS的区别
14.3.3 HBase表
14.3.4 HBase单元格
14.3.5 HBase列簇
14.4 HBase命令和API
14.4.1 获取命令列表:帮助命令
14.4.2 创建表:create命令
14.4.3 向表中加入行:put命令
14.4.4 从表中检索行:get命令
14.4.5 读取多行:scan命令
14.4.6 统计表中的行数:count命令
14.4.7 删除行:delete命令
14.4.8 清空表:truncate命令
14.4.9 删除表:drop命令
14.4.10 更换表:alter命令
14.5 HBase架构
14.5.1 HBase组件
14.5.2 HBase中的压缩与分区
14.5.3 压缩
14.6 HBase配置概览
14.7 HBase应用程序设计
14.7.1 长表vs宽表vs窄表
14.7.2 行键设计
14.8 使用Java API操作HBase
14.8.1 一切都是字节
14.8.2 创建HBase表
14.8.3 使用HBaseAdmin类管理HBase
14.8.4 使用Java API访问数据
14.9 HBase与MapReduce集成
14.9.1 使用MapReduce任务读取HBase表
14.9.2 HBase和MapReduce集群
14.10 本章小结
第15章 Hadoop与数据科学
15.1 Hadoop中的数据科学方法
15.2 Apache Hama
15.2.1 整体同步并行计算模型
15.2.2 Hama Hello World!
15.2.3 蒙特卡洛方法
15.2.4 K-Means聚类
15.3 Apache Spark
15.3.1 弹性分布式数据集(RDD)
15.3.2 Spark与蒙特卡洛算法
15.3.3 Spark与KMeans聚类
15.4 RHadoop
15.5 本章小结
第16章 Hadoop与云计算
16.1 经济性
16.1.1 自有集群
16.1.2 基于云平台的集群
16.1.3 弹性
16.1.4 按需付费
16.1.5 竞价
16.1.6 混合集群
16.2 后勤保障
16.2.1 导入/导出
16.2.2 数据保存
16.3 安全性
16.4 云端应用模型
16.5 云服务商
16.5.1 亚马逊网络服务(AWS)
16.5.2 谷歌云平台
16.5.3 微软Azure
16.5.4 选择云服务商
16.6 案例学习:AWS
16.6.1 EMR
16.6.2 EC2
16.7 本章小结
第17章 构建YARN应用程序
17.1 YARN:通用分布式系统
17.2 YARN:快速浏览
17.3 创建YARN应用程序
17.4 DownloadService.java类
17.5 Client.java类
17.5.1 从客户端启动应用管理器的步骤
17.5.2 创建YarnClient
17.5.3 配置应用程序
17.5.4 启动应用管理器
17.5.5 监控应用
17.6 ApplicationMaster.java
17.6.1 启动工作任务的步骤
17.6.2 初始化应用管理器协议和容器管理协议
17.6.3 在资源管理器中注册应用管理器
17.6.4 配置容器参数
17.6.5 向资源管理器请求容器
17.6.6 在任务节点上启动容器
17.6.7 等待容器结束工作任务
17.6.8 在资源管理器中注销应用管理器
17.7 运行应用管理器
17.7.1 在非托管模式中启动应用管理器
17.7.2 在托管模式中启动应用管理器
17.8 本章小结
附录A 安装Hadoop
附录B 使用Maven和Eclipse
附录C Apache Ambari