Hadoop应用架构
版权声明
O'Reilly Media, Inc. 介绍
示例代码
目标读者
写作目的
本书结构
使用代码示例
Safari® Books Online
Mark Grover的致谢
Ted Malaska的致谢
Jonathan Seidman的致谢
Gwen Shapira的致谢
第一部分 考虑 Hadoop 应用的架构设计
1 Hadoop 数据建模
1.1 数据存储选型
1.1.1 标准文件格式
1.1.2 Hadoop文件类型
1.1.3 序列化存储格式
1.1.4 列式存储格式
1.1.5 压缩
1.2 HDFS模式设计
1.2.1 文件在HDFS中的位置
1.2.2 高级HDFS模式设计
1.2.3 HDFS模式设计总结
1.3 HBase模式设计
1.3.1 行键
1.3.2 时间戳
1.3.3 hop
1.3.4 表和Region
1.3.5 使用列
1.3.6 列簇
1.3.7 TTL
1.4 元数据管理
1.4.1 什么是元数据
1.4.2 为什么元数据至关重要
1.4.3 元数据的存储位置
1.4.4 元数据管理举例
1.4.5 Hive metastore与HCatalog的局限性
1.4.6 其他存储元数据的方式
1.5 结论
2 Hadoop 数据移动
2.1 数据采集考量
2.1.1 数据采集的时效性
2.1.2 增量更新
2.1.3 访问模式
2.1.4 数据源系统及数据结构
2.1.5 变换
2.1.6 网络瓶颈
2.1.7 网络安全性
2.1.8 被动推送与主动请求
2.1.9 错误处理
2.1.10 复杂度
2.2 数据采集选择
2.2.1 文件传输
2.2.2 文件传输与其他采集方法的考量
2.2.3 Sqoop:Hadoop与关系数据库的批量传输
2.2.4 Flume:基于事件的数据收集及处理
2.2.5 Kafka
2.3 数据导出
2.4 小结
3 Hadoop 数据处理
3.1 MapReduce
3.1.1 MapReduce概述
3.1.2 MapReduce示例
3.1.3 MapReduce使用场景
3.2 Spark
3.2.1 Spark概述
3.2.2 Spark组件概述
3.2.3 Spark基本概念
3.2.4 Spark的优点
3.2.5 Spark示例
3.2.6 Spark使用场景
3.3 抽象层
3.3.1 Pig
3.3.2 Pig示例
3.3.3 Pig使用场景
3.4 Crunch
3.4.1 Crunch示例
3.4.2 Crunch使用场景
3.5 Cascading
3.5.1 Cascading示例
3.5.2 Cascading使用场景
3.6 Hive
3.6.1 Hive概述
3.6.2 Hive示例
3.6.3 Hive使用场景
3.7 Impala
3.7.1 Impala概述
3.7.2 面向高速查询的设计
3.7.3 Impala示例
3.7.4 Impala使用场景
3.8 小结
4 Hadoop 数据处理通用范式
4.1 模式一:依主键移除重复记录
4.1.1 去重示例的测试数据生成
4.1.2 代码示例:使用Scala实现Spark去重
4.1.3 代码示例:使用SQL实现去重
4.2 模式二:数据开窗分析
4.2.1 生成开窗分析的示例数据
4.2.2 代码示例:使用Spark分析数据的高峰和低谷
4.2.3 代码示例:使用SQL分析数据的高峰和低谷
4.3 模式三:基于时间序列的更新
4.3.1 利用HBase的版本特性
4.3.2 以记录主键与开始时间作HBase的行键
4.3.3 重写HDFS数据更新整个表
4.3.4 利用HDFS上的分区存储当前记录和历史记录
4.3.5 生成时间序列的示例数据
4.3.6 代码示例:使用Spark更新时间序列数据
4.3.7 代码示例:使用SQL更新时间序列数据
4.4 小结
5 Hadoop 图处理
5.1 什么是图
5.2 什么是图处理
5.3 分布式系统中的图处理
5.3.1 块同步并行模型
5.3.2 BSP举例
5.4 Giraph
5.4.1 数据的输入和分片
5.4.2 使用BSP批处理图
5.4.3 将图回写磁盘
5.4.4 整体流程控制
5.4.5 何时选用Giraph
5.5 GraphX
5.5.1 另一种RDD
5.5.2 GraphX的Pregel接口
5.5.3 vprog()
5.5.4 sendMessage()
5.5.5 mergeMessage()
5.6 工具选择
5.7 小结
6 协调调度
6.1 工作流协调调度的必要性
6.2 脚本的局限性
6.3 企业级任务调度器及Hadoop
6.4 Hadoop生态系统中的工作流框架
6.5 Oozie术语
6.6 Oozie概述
6.7 Oozie工作流
6.8 工作流范式
6.8.1 点对点式工作流
6.8.2 扇出式工作流
6.8.3 分支决策式工作流
6.9 工作流参数化
6.10 Classpath定义
6.11 调度模式
6.11.1 依频次调度
6.11.2 时间或数据触发式
6.12 执行工作流
6.13 小结
7 Hadoop 近实时处理
7.1 流处理
7.2 Apache Storm
7.2.1 Storm高级架构
7.2.2 Storm拓扑
7.2.3 元组及数据流
7.2.4 spout和bolt
7.2.5 数据流分组
7.2.6 Storm应用的可靠性
7.2.7 仅处理一次机制
7.2.8 容错性
7.2.9 Storm与HDFS集成
7.2.10 Storm与HBase集成
7.2.11 Storm示例:简单移动平均
7.2.12 Storm评估
7.3 Trident接口
7.3.1 Trident示例:简单移动平均
7.3.2 Trident评估
7.4 Spark Streaming
7.4.1 Spark Streaming概述
7.4.2 Spark Streaming示例:简单求和
7.4.3 Spark Streaming示例:多路输入
7.4.4 Spark Streaming示例:状态维护
7.4.5 Spark Streaming示例:窗口函数
7.4.6 Spark Streaming示例:Streaming与ETL代码比较
7.4.7 Spark Streaming评估
7.5 Flume拦截器
7.6 工具选择
7.6.1 低延迟的数据扩充、验证、报警及采集
7.6.2 NRT技术、滚动平均及迭代处理
7.6.3 复杂数据流
7.7 小结
第二部分 案例研究
8 点击流分析
8.1 用例场景定义
8.2 使用Hadoop进行点击流分析
8.3 设计概述
8.4 数据存储
8.5 数据采集
8.5.1 客户端层
8.5.2 收集器层
8.6 数据处理
8.6.1 数据去重
8.6.2 会话生成
8.7 数据分析
8.8 协调调度
8.9 小结
9 欺诈检测
9.1 持续改善
9.2 开始行动
9.3 欺诈检测系统架构需求
9.4 用例介绍
9.5 架构设计
9.6 客户端架构
9.7 画像存储及访问
9.7.1 缓存
9.7.2 HBase数据定义
9.7.3 事务状态更新:通过或否决
9.8 数据采集
客户端与Flume间的数据通路
9.9 近实时处理与探索性分析
9.10 近实时处理
9.11 探索性分析
9.12 其他架构对比
9.12.1 Flume拦截器
9.12.2 从Kafka到Storm或Spark Streaming
9.12.3 扩展的业务规则引擎
9.13 小结
10 数据仓库
10.1 使用Hadoop构建数据仓库
10.2 用例场景定义
10.3 OLTP模式
10.4 数据仓库:术语介绍
10.5 数据仓库的Hadoop实践
10.6 架构设计
10.6.1 数据建模及存储
10.6.2 数据采集
10.6.3 数据处理及访问
10.6.4 数据聚合
10.6.5 数据导出
10.6.6 流程调度
10.7 小结
附录 A Impala 中的关联
A.1 广播式关联
A.2 分区后散列关联
封面介绍
看完了
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5b7513e4b0d4dc87773729.png)
思维导图在线编辑链接: