Nathan Marz
目录译 者 序前 言关于本书致 谢第1章 大数据的新范式1.1 本书是如何组织的1.2 扩展传统数据库1.2.1 用队列扩展1.2.2 通过数据库分片进行扩展1.2.3 开始处理容错问题1.2.4 损坏问题1.2.5 到底是哪里出错了1.2.6 大数据技术是如何起到帮助作用的1.3 NoSQL不是万能的1.4 基本原理1.5 大数据系统应有的属性1.5.1 鲁棒性和容错性1.5.2 低延迟读取和更新1.5.3 可扩展性1.5.4 通用性1.5.5 延展性1.5.6 即席查询1.5.7 最少维护1.5.8 可调试性1.6 全增量架构的问题1.6.1 操作复杂性1.6.2 实现最终一致性的极端复杂性1.6.3 缺乏容忍人为错误1.6.4 全增量架构解决方案与 Lambda架构解决方案1.7 [Lambda架构]https://yq.aliyun.com/articles/89620)1.7.1 批处理层1.7.2 服务层1.7.3 批处理层和服务层满足几乎所有属性1.7.4 速度层1.8 技术上的最新趋势1.8.1 CPU并不是越来越快1.8.2 弹性云1.8.3 大数据充满活力的开源生态系统1.9 示例应用:SuperWebAnalytics.com1.10 总结第一部分 批处理层第2章 大数据的数据模型2.1 数据的属性2.1.1 数据是原始的2.1.2 数据是不可变的2.1.3 数据是永远真实的2.2 基于事实的数据表示模型2.2.1 事实的示例及属性2.2.2 基于事实的模型的优势2.3 图模式2.3.1 图模式的元素2.3.2 可实施模式的必要性2.4 SuperWebAnalytics.com的完整数据模型2.5 总结42第3章大数据的数据模型:示例3.1 为什么使用序列化框架3.2 Apache Thrift3.2.1 节点3.2.2 边3.2.3 属性3.2.4 把一切组合成数据对象3.2.5 模式演变3.3 序列化框架的局限性3.4 总结第4章 批处理层的数据存储4.1 主数据集的存储需求4.2 为批处理层选择存储方案4.2.1 使用键/值存储主数据集4.2.2 分布式文件系统4.3 分布式文件系统是如何工作的4.4 使用分布式文件系统存储主数据集4.5 垂直分区4.6 分布式文件系统的底层性质4.7 在分布式文件系统上存储SuperWebAnalytics.com的主数据集4.8 总结第5章 批处理层的数据存储:示例5.1 使用HDFS5.1.1 小文件问题5.1.2 转向更高层次的抽象5.2 使用Pail在批处理层存储数据5.2.2 序列化对象到Pail中5.2.3 使用Pail进行批处理操作5.2.4 使用Pail进行垂直分区5.2.5 Pail文件格式与压缩5.2.6 Pail优点的总结5.3 存储SuperWebAnalytics.com的主数据集5.3.1 Thrift对象的结构化Pail5.3.2 SuperWebAnalytics.com的基础Pail5.3.3 用于垂直分区数据集的分片Pail5.4 总结第6章 批处理层6.1 启发性示例6.1.1 给定时间范围内的页面浏览量6.1.2 性别推理6.1.3 影响力分数6.2 批处理层上的计算6.3 重新计算算法与增量算法6.3.1 性能6.3.2 容忍人为错误6.3.3 算法的通用性6.3.4 选择算法的风格6.4 批处理层中的可扩展性6.5 MapReduce:一种大数据计算的范式6.5.1 可扩展性6.5.2 容错性6.5.3 MapReduce的通用性6.6 MapReduce的底层特性6.6.1 多步计算很怪异6.6.2 手动实现连接非常复杂6.6.3 逻辑和物理执行紧密耦合6.7 管道图—一种关于批处理计算的高级思维方式6.7.1 管道图的概念6.7.2 通过MapReduce执行管道图6.7.3 合并聚合器6.7.4 管道图示例6.8 总结第7章 批处理层:示例7.1 一个例证7.2 数据处理工具的常见陷阱7.2.1 自定义语言7.2.2 不良的可组合抽象7.3 JCascalog介绍7.3.1 JCascalog的数据模型7.3.2 JCascalog查询的结构7.3.3 查询多个数据集7.3.4 分组和聚合器7.3.5 对一个查询示例进行单步调试7.3.6 自定义谓词操作7.4 组合7.4.1 合并子查询7.4.2 动态创建子查询7.4.3 谓词宏7.4.4 动态创建谓词宏7.5 总结第8章 批处理层示例:架构和算法8.1 SuperWebAnalytics.com批处理层的设计8.1.1 所支持的查询8.1.2 批处理视图8.2 工作流概述8.3 获取新数据8.4 URL规范化8.5 用户标识符规范化8.6 页面浏览去重8.7 计算批处理视图8.7.1 给定时间范围内的页面浏览量8.7.2 给定时间范围内的独立访客8.7.3 跳出率分析8.8 总结第9章 批处理层示例:实现9.1 出发点9.2 准备工作流9.3 获取新数据9.4 URL规范化9.5 用户标识符规范化9.6 页面浏览去重9.7 计算批处理视图9.7.1 给定时间范围内的页面浏览量9.7.2 给定时间范围内的独立访客9.7.3 跳出率分析9.8 总结第二部分 服务层第10章 服务层概述10.1 服务层的性能指标10.2 规范化/非规范化问题的服务层解决方案10.3 服务层数据库的需求10.4 设计SuperWebAnalytics.com的服务层10.4.1 给定时间范围内的页面浏览量10.4.2 给定时间范围内的独立访客10.4.3 跳出率分析10.5 对比全增量的解决方案10.5.1 给定时间范围内的独立访客的全增量方案10.5.2 与Lambda架构解决方案的比较10.6 总结第11章 服务层:示例11.1 ElephantDB的基本概念11.1.1 ElephantDB中的视图创建11.1.2 ElephantDB中的视图服务11.1.3 使用ElephantDB11.2 创建SuperWebAnalytics.com的服务层11.2.1 给定时间范围内的页面浏览量11.2.2 给定时间范围内的独立访客数量11.2.3 跳出率分析11.3 总结第三部分 速度层第12章 实时视图12.1 计算实时视图12.2 存储实时视图12.2.1 最终一致性12.2.2 速度层中存储的状态总量12.3 增量计算的挑战12.3.1 CAP原理的有效性12.3.2 CAP原理和增量算法之间复杂的相互作用12.4 异步更新与同步更新12.5 过期实时视图12.6 总结第13章 实时视图:示例13.1 Cassandra的数据模型13.2 使用Cassandra13.3 总结第14章 队列和流处理14.1 队列14.1.1 单消费者队列14.1.2 多消费者队列14.2 流处理14.2.1 队列和工作节点14.2.2 队列和工作节点的缺陷14.3 更高层次的一次一个的流处理14.3.1 Storm模型14.3.2 保证消息处理14.4 SuperWebAnalytics.com速度层14.5 总结第15章 队列和流处理:示例15.1 使用Apache Storm定义拓扑结构15.2 Apache Storm集群及其部署15.3 保证消息处理15.4 实现SuperWebAnalytics.com给定时间范围内的独立访客的速度层315.5 总结第16章 微批量流处理16.1 实现有且仅有一次语义16.1.1 强有序处理16.1.2 微批量流处理16.1.3 微批量流处理的拓扑结构16.2 微批量流处理的核心概念16.3 微批量流处理的扩展管道图16.4 完成SuperWebAnalytics.com的速度层16.4.1 给定时间范围内的页面浏览量16.4.2 跳出率分析16.5 另一个跳出率分析示例16.6 总结第17章 微批量流处理:示例17.1 使用Trident17.2 完成SuperWebAnalytics.com的速度层17.2.1 给定时间范围内的页面浏览量17.2.2 跳出率分析17.3 完全容错、基于内存及微批量处理17.4 总结第18章 深入Lambda架构18.1 定义数据系统18.2 批处理层和服务层18.2.1 增量的批处理18.2.2 测量和优化批处理层的资源使用18.3 速度层18.4 查询层18.5 总结
相关资源:敏捷开发V1.0.pptx