当前位置:首页 > 工业技术
大数据系统构建  可扩展实时数据系统构建原理与最佳实践
大数据系统构建  可扩展实时数据系统构建原理与最佳实践

大数据系统构建 可扩展实时数据系统构建原理与最佳实践PDF电子书下载

工业技术

  • 电子书积分:11 积分如何计算积分?
  • 作 者:(美)南森·马茨,(美)詹姆斯·沃伦著;马延辉,向磊,魏东琦译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:7111552942
  • 页数:282 页
图书介绍:
《大数据系统构建 可扩展实时数据系统构建原理与最佳实践》目录

第1章 大数据的新范式 1

1.1 本书是如何组织的 2

1.2 扩展传统数据库 3

1.2.1 用队列扩展 3

1.2.2 通过数据库分片进行扩展 4

1.2.3 开始处理容错问题 4

1.2.4 损坏问题 5

1.2.5 到底是哪里出错了 5

1.2.6 大数据技术是如何起到帮助作用的 5

1.3 NoSQL不是万能的 6

1.4 基本原理 6

1.5 大数据系统应有的属性 7

1.5.1 鲁棒性和容错性 7

1.5.2 低延迟读取和更新 8

1.5.3 可扩展性 8

1.5.4 通用性 8

1.5.5 延展性 8

1.5.6 即席查询 9

1.5.7 最少维护 9

1.5.8 可调试性 9

1.6 全增量架构的问题 10

1.6.1 操作复杂性 10

1.6.2 实现最终一致性的极端复杂性 11

1.6.3 缺乏容忍人为错误 12

1.6.4 全增量架构解决方案与Lambda架构解决方案 13

1.7 Lambda架构 14

1.7.1 批处理层 15

1.7.2 服务层 16

1.7.3 批处理层和服务层满足几乎所有属性 16

1.7.4 速度层 17

1.8 技术上的最新趋势 19

1.8.1 CPU并不是越来越快 20

1.8.2 弹性云 20

1.8.3 大数据充满活力的开源生态系统 20

1.9 示例应用:SuperWebAnalytics.com 21

1.10 总结 22

第一部分 批处理层 24

第2章 大数据的数据模型 24

2.1 数据的属性 25

2.1.1 数据是原始的 28

2.1.2 数据是不可变的 30

2.1.3 数据是永远真实的 33

2.2 基于事实的数据表示模型 34

2.2.1 事实的示例及属性 34

2.2.2 基于事实的模型的优势 36

2.3 图模式 39

2.3.1 图模式的元素 39

2.3.2 可实施模式的必要性 40

2.4 SuperWebAnalytics.com的完整数据模型 41

2.5 总结 42

第3章 大数据的数据模型:示例 44

3.1 为什么使用序列化框架 44

3.2 Apache Thrift 45

3.2.1 节点 46

3.2.2 边 46

3.2.3 属性 47

3.2.4 把一切组合成数据对象 47

3.2.5 模式演变 48

3.3 序列化框架的局限性 49

3.4 总结 50

第4章 批处理层的数据存储 51

4.1 主数据集的存储需求 52

4.2 为批处理层选择存储方案 53

4.2.1 使用键/值存储主数据集 53

4.2.2 分布式文件系统 54

4.3 分布式文件系统是如何工作的 54

4.4 使用分布式文件系统存储主数据集 56

4.5 垂直分区 58

4.6 分布式文件系统的底层性质 58

4.7 在分布式文件系统上存储SuperWebAnalytics.com的主数据集 60

4.8 总结 61

第5章 批处理层的数据存储:示例 62

5.1 使用HDFS 62

5.1.1 小文件问题 64

5.1.2 转向更高层次的抽象 64

5.2 使用Pail在批处理层存储数据 65

5.2.1 Pail基本操作 66

5.2.2 序列化对象到Pail中 67

5.2.3 使用Pail进行批处理操作 69

5.2.4 使用Pail进行垂直分区 69

5.2.5 Pail文件格式与压缩 71

5.2.6 Pail优点的总结 71

5.3 存储SuperWebAnalytics.com的主数据集 72

5.3.1 Thrift对象的结构化Pail 73

5.3.2 SuperWebAnalytics.com的基础Pail 74

5.3.3 用于垂直分区数据集的分片Pail 75

5.4 总结 78

第6章 批处理层 79

6.1 启发性示例 80

6.1.1 给定时间范围内的页面浏览量 80

6.1.2 性别推理 80

6.1.3 影响力分数 81

6.2 批处理层上的计算 82

6.3 重新计算算法与增量算法 84

6.3.1 性能 85

6.3.2 容忍人为错误 86

6.3.3 算法的通用性 86

6.3.4 选择算法的风格 87

6.4 批处理层中的可扩展性 87

6.5 MapReduce:一种大数据计算的范式 88

6.5.1 可扩展性 89

6.5.2 容错性 91

6.5.3 MapReduce的通用性 92

6.6 MapReduce的底层特性 94

6.6.1 多步计算很怪异 94

6.6.2 手动实现连接非常复杂 94

6.6.3 逻辑和物理执行紧密耦合 96

6.7 管道图——一种关于批处理计算的高级思维方式 97

6.7.1 管道图的概念 97

6.7.2 通过MapReduce执行管道图 101

6.7.3 合并聚合器 101

6.7.4 管道图示例 102

6.8 总结 103

第7章 批处理层:示例 104

7.1 一个例证 105

7.2 数据处理工具的常见陷阱 106

7.2.1 自定义语言 107

7.2.2 不良的可组合抽象 107

7.3 JCascalog介绍 108

7.3.1 JCascalog的数据模型 109

7.3.2 JCascalog查询的结构 110

7.3.3 查询多个数据集 111

7.3.4 分组和聚合器 113

7.3.5 对一个查询示例进行单步调试 114

7.3.6 自定义谓词操作 117

7.4 组合 121

7.4.1 合并子查询 122

7.4.2 动态创建子查询 123

7.4.3 谓词宏 125

7.4.4 动态创建谓词宏 128

7.5 总结 130

第8章 批处理层示例:架构和算法 131

8.1 SuperWebAnalytics.com批处理层的设计 132

8.1.1 所支持的查询 132

8.1.2 批处理视图 132

8.2 工作流概述 135

8.3 获取新数据 137

8.4 URL规范化 137

8.5 用户标识符规范化 138

8.6 页面浏览去重 142

8.7 计算批处理视图 142

8.7.1 给定时间范围内的页面浏览量 143

8.7.2 给定时间范围内的独立访客 143

8.7.3 跳出率分析 144

8.8 总结 145

第9章 批处理层示例:实现 147

9.1 出发点 147

9.2 准备工作流 148

9.3 获取新数据 149

9.4 URL规范化 152

9.5 用户标识符规范化 153

9.6 页面浏览去重 159

9.7 计算批处理视图 159

9.7.1 给定时间范围内的页面浏览量 159

9.7.2 给定时间范围内的独立访客 161

9.7.3 跳出率分析 163

9.8 总结 165

第二部分 服务层 168

第10章 服务层概述 168

10.1 服务层的性能指标 169

10.2 规范化/非规范化问题的服务层解决方案 172

10.3 服务层数据库的需求 173

10.4 设计SuperWebAnalytics.com的服务层 174

10.4.1 给定时间范围内的页面浏览量 175

10.4.2 给定时间范围内的独立访客 175

10.4.3 跳出率分析 176

10.5 对比全增量的解决方案 177

10.5.1 给定时间范围内的独立访客的全增量方案 177

10.5.2 与Lambda架构解决方案的比较 182

10.6 总结 183

第11章 服务层:示例 184

11.1 ElephantDB的基本概念 184

11.1.1 ElephantDB中的视图创建 185

11.1.2 ElephantDB中的视图服务 185

11.1.3 使用ElephantDB 186

11.2 创建SuperWebAnalytics.com的服务层 188

11.2.1 给定时间范围内的页面浏览量 188

11.2.2 给定时间范围内的独立访客数量 191

11.2.3 跳出率分析 191

11.3 总结 192

第三部分 速度层 194

第12章 实时视图 194

12.1 计算实时视图 195

12.2 存储实时视图 197

12.2.1 最终一致性 198

12.2.2 速度层中存储的状态总量 198

12.3 增量计算的挑战 199

12.3.1 CAP原理的有效性 199

12.3.2 CAP原理和增量算法之间复杂的相互作用 201

12.4 异步更新与同步更新 202

12.5 过期实时视图 203

12.6 总结 205

第13章 实时视图:示例 206

13.1 Cassandra的数据模型 206

13.2 使用Cassandra 208

13.3 总结 210

第14章 队列和流处理 211

14.1 队列 211

14.1.1 单消费者队列 212

14.1.2 多消费者队列 214

14.2 流处理 214

14.2.1 队列和工作节点 215

14.2.2 队列和工作节点的缺陷 216

14.3 更高层次的一次一个的流处理 217

14.3.1 Storm模型 217

14.3.2 保证消息处理 221

14.4 SuperWeb.Analytics.com速度层 223

14.5 总结 226

第15章 队列和流处理:示例 227

15.1 使用ApacheStorm定义拓扑结构 227

15.2 Apache Storm集群及其部署 230

15.3 保证消息处理 232

15.4 实现SuperWebAnalytics.com给定时间范围内的独立访客的速度层 233

15.5 总结 237

第16章 微批量流处理 239

16.1 实现有且仅有一次语义 240

16.1.1 强有序处理 240

16.1.2 微批量流处理 241

16.1.3 微批量流处理的拓扑结构 242

16.2 微批量流处理的核心概念 244

16.3 微批量流处理的扩展管道图 245

16.4 完成SuperWebAnalytics.com的速度层 246

16.4.1 给定时间范围内的页面浏览量 246

16.4.2 跳出率分析 247

16.5 另一个跳出率分析示例 251

16.6 总结 252

第17章 微批量流处理:示例 253

17.1 使用Trident 253

17.2 完成SuperWebAnalytics.com的速度层 257

17.2.1 给定时间范围内的页面浏览量 257

17.2.2 跳出率分析 259

17.3 完全容错、基于内存及微批量处理 265

17.4 总结 266

第18章 深入Lambda架构 268

18.1 定义数据系统 268

18.2 批处理层和服务层 270

18.2.1 增量的批处理 270

18.2.2 测量和优化批处理层的资源使用 276

18.3 速度层 280

18.4 查询层 281

18.5 总结 282

相关图书
作者其它书籍
返回顶部