注重体验与质量的电子书资源下载网站
分类于: 云计算&大数据 互联网
简介
目录
译者序
前言
致谢
作者简介
技术编辑简介
第1章 流数据简介 1
1.1 流数据的来源 2
1.1.1 运行监控 2
1.1.2 Web分析 2
1.1.3 在线广告 3
1.1.4 社交媒体 3
1.1.5 移动数据和物联网 4
1.2 流数据的特别之处 5
1.2.1 始终在线,持续流动 5
1.2.2 松散结构 5
1.2.3 高基数的存储 6
1.3 基础架构和算法 6
1.4 总结 7
第一部分 流分析架构
第2章 实时流架构设计 10
2.1 实时架构的组件 10
2.1.1 数据采集 11
2.1.2 数据流程 11
2.1.3 数据处理 13
2.1.4 数据存储 13
2.1.5 数据交付 14
2.2 实时架构的特性 16
2.2.1 高可用性 16
2.2.2 低延迟 17
2.2.3 水平可扩展性 17
2.3 实时编程语言 18
2.3.1 Java 18
2.3.2 Scala和Clojure 19
2.3.3 JavaScript 19
2.3.4 Go语言 20
2.4 实时架构概览 20
2.4.1 数据采集 20
2.4.2 数据流程 21
2.4.3 数据处理 21
2.4.4 数据存储 21
2.4.5 数据交付 22
2.5 总结 22
第3章 服务配置和协调 24
3.1 配置和协调系统的研发动机 24
3.2 维护分布式状态 25
3.2.1 不可靠的网络连接 25
3.2.2 时钟同步 25
3.2.3 不可靠环境下的一致性 25
3.3 Apache ZooKeeper 26
3.3.1 znode 27
3.3.2 监视和通知 28
3.3.3 保持一致性 28
3.3.4 创建ZooKeeper集群 28
3.3.5 ZooKeeper本地Java客户端 33
3.3.6 Curator客户端 39
3.3.7 Curator Recipes组件 45
3.4 总结 50
第4章 流分析中的数据流程管理 52
4.1 分布式数据流程 52
4.1.1 至少交付一次 52
4.1.2 “n+1”问题 53
4.2 Apache Kafka:高吞吐量分布式消息机制 54
4.2.1 设计与实现 54
4.2.2 配置Kafka环境 57
4.2.3 与Kafka代理交互 65
4.3 Apache Flume:分布式日志采集系统 66
4.3.1 Flume agent 67
4.3.2 配置agent 68
4.3.3 Flume数据模型 68
4.3.4 channel选择器 69
4.3.5 Flume source 71
4.3.6 Flume sink 78
4.3.7 sink processor 80
4.3.8 Flume channel 80
4.3.9 Flume Interceptor 81
4.3.10 集成定制Flume组件 83
4.3.11 运行Flume agent 83
4.4 总结 83
第5章 流数据的处理 85
5.1 分布式流数据处理 85
5.1.1 协调 86
5.1.2 分区和融合 86
5.1.3 事务 86
5.2 用Storm处理数据 86
5.2.1 Storm集群的组件 87
5.2.2 配置Storm集群 88
5.2.3 分布式集群 89
5.2.4 本地集群 92
5.2.5 Storm拓扑 92
5.2.6 实现bolt 95
5.2.7 实现并使用spout 99
5.2.8 分布式远程过程调用 104
5.2.9 Trident:Storm的DSL 105
5.3 用Samza处理数据 111
5.3.1 Apache YARN 111
5.3.2 从YARN和Samza开始 112
5.3.3 将Samza集成进数据流程 115
5.3.4 Samza作业 116
5.4 总结 122
第6章 流数据的存储 123
6.1 一致性哈希 123
6.2 “NoSQL”存储系统 124
6.2.1 Redis 125
6.2.2 MongoDB 132
6.2.3 Cassandra 150
6.3 其他存储技术 159
6.3.1 关系数据库 160
6.3.2 分布式内存数据网格 160
6.4 存储技术的选择 160
6.4.1 键-值存储 160
6.4.2 文档存储 160
6.4.3 分布式哈希表存储 161
6.4.4 内存网格 161
6.4.5 关系数据库 161
6.5 数据仓库 161
6.5.1 将Hadoop作为ETL和数据仓库 162
6.5.2 Lambda架构 166
6.6 总结 166
第二部分 流分析与可视化
第7章 流度量的交付 168
7.1 流Web应用 168
7.1.1 使用Node 169
7.1.2 用NPM管理Node项目 171
7.1.3 基于Node开发Web应用 174
7.1.4 基本的流仪表板 176
7.1.5 向Web应用加入流 180
7.2 数据可视化 190
7.2.1 HTML5 Canvas和内联SVG 190
7.2.2 数据驱动文档:D3.js 196
7.2.3 高层工具 204
7.3 移动流应用 208
7.4 总结 209
第8章 精确的聚集计算和交付 211
8.1 定时计数与求和 214
8.1.1 基于Bolt的计数 214
8.1.2 基于Trident的计数 216
8.1.3 基于Samza的计数 217
8.2 多分辨率时间序列的聚集计算 218
8.3 随机优化 222
8.4 时间序列数据的交付 223
8.4.1 用D3.js绘制带状图 224
8.4.2 高速Canvas图 225
8.4.3 地平线图 226
8.5 总结 227
第9章 流数据的统计近似 229
9.1 数值计算库 229
9.2 概率和分布 230
9.2.1 期望和方差 231
9.2.2 统计分布 232
9.2.3 离散分布 232
9.2.4 连续分布 233
9.2.5 联合分布 235
9.3 参数估计 236
9.3.1 参数推断 236
9.3.2 Delta方法 237
9.3.3 分布不等式 238
9.4 随机数产生器 238
9.5 抽样过程 242
9.5.1 从固定数据集中抽样 242
9.5.2 从流数据中抽样 243
9.5.3 有偏流抽样 244
9.6 总结 245
第10章 使用略图近似流数据 246
10.1 寄存器和哈希函数 246
10.1.1 寄存器 247
10.1.2 哈希函数 247
10.2 集合 249
10.3 Bloom Filter 251
10.3.1 算法 251
10.3.2 Bloom Filter大小的选择 253
10.3.3 并集和交集 253
10.3.4 基数估计 254
10.3.5 有趣的变体 255
10.4 Distinct Value略图 258
10.4.1 Min-Count算法 258
10.4.2 HyperLogLog算法 260
10.5 Count-Min略图 264
10.5.1 点查询 265
10.5.2 Count-Min略图的实现 265
10.5.3 Top-K和“Heavy Hitters” 266
10.5.4 范围查询和分位数查询 268
10.6 其他应用 270
10.7 总结 271
第11章 流数据的应用 272
11.1 实时数据模型 273
11.1.1 简单时间序列模型 273
11.1.2 线性模型 276
11.1.3 逻辑回归 280
11.1.4 神经网络模型 281
11.2 用模型预测 289
11.2.1 指数平滑法 289
11.2.2 回归法 291
11.2.3 神经网络法 293
11.3 监控 294
11.3.1 离群点检测 294
11.3.2 变化检测 296
11.4 实时优化 297
11.5 总结 298
前言
致谢
作者简介
技术编辑简介
第1章 流数据简介 1
1.1 流数据的来源 2
1.1.1 运行监控 2
1.1.2 Web分析 2
1.1.3 在线广告 3
1.1.4 社交媒体 3
1.1.5 移动数据和物联网 4
1.2 流数据的特别之处 5
1.2.1 始终在线,持续流动 5
1.2.2 松散结构 5
1.2.3 高基数的存储 6
1.3 基础架构和算法 6
1.4 总结 7
第一部分 流分析架构
第2章 实时流架构设计 10
2.1 实时架构的组件 10
2.1.1 数据采集 11
2.1.2 数据流程 11
2.1.3 数据处理 13
2.1.4 数据存储 13
2.1.5 数据交付 14
2.2 实时架构的特性 16
2.2.1 高可用性 16
2.2.2 低延迟 17
2.2.3 水平可扩展性 17
2.3 实时编程语言 18
2.3.1 Java 18
2.3.2 Scala和Clojure 19
2.3.3 JavaScript 19
2.3.4 Go语言 20
2.4 实时架构概览 20
2.4.1 数据采集 20
2.4.2 数据流程 21
2.4.3 数据处理 21
2.4.4 数据存储 21
2.4.5 数据交付 22
2.5 总结 22
第3章 服务配置和协调 24
3.1 配置和协调系统的研发动机 24
3.2 维护分布式状态 25
3.2.1 不可靠的网络连接 25
3.2.2 时钟同步 25
3.2.3 不可靠环境下的一致性 25
3.3 Apache ZooKeeper 26
3.3.1 znode 27
3.3.2 监视和通知 28
3.3.3 保持一致性 28
3.3.4 创建ZooKeeper集群 28
3.3.5 ZooKeeper本地Java客户端 33
3.3.6 Curator客户端 39
3.3.7 Curator Recipes组件 45
3.4 总结 50
第4章 流分析中的数据流程管理 52
4.1 分布式数据流程 52
4.1.1 至少交付一次 52
4.1.2 “n+1”问题 53
4.2 Apache Kafka:高吞吐量分布式消息机制 54
4.2.1 设计与实现 54
4.2.2 配置Kafka环境 57
4.2.3 与Kafka代理交互 65
4.3 Apache Flume:分布式日志采集系统 66
4.3.1 Flume agent 67
4.3.2 配置agent 68
4.3.3 Flume数据模型 68
4.3.4 channel选择器 69
4.3.5 Flume source 71
4.3.6 Flume sink 78
4.3.7 sink processor 80
4.3.8 Flume channel 80
4.3.9 Flume Interceptor 81
4.3.10 集成定制Flume组件 83
4.3.11 运行Flume agent 83
4.4 总结 83
第5章 流数据的处理 85
5.1 分布式流数据处理 85
5.1.1 协调 86
5.1.2 分区和融合 86
5.1.3 事务 86
5.2 用Storm处理数据 86
5.2.1 Storm集群的组件 87
5.2.2 配置Storm集群 88
5.2.3 分布式集群 89
5.2.4 本地集群 92
5.2.5 Storm拓扑 92
5.2.6 实现bolt 95
5.2.7 实现并使用spout 99
5.2.8 分布式远程过程调用 104
5.2.9 Trident:Storm的DSL 105
5.3 用Samza处理数据 111
5.3.1 Apache YARN 111
5.3.2 从YARN和Samza开始 112
5.3.3 将Samza集成进数据流程 115
5.3.4 Samza作业 116
5.4 总结 122
第6章 流数据的存储 123
6.1 一致性哈希 123
6.2 “NoSQL”存储系统 124
6.2.1 Redis 125
6.2.2 MongoDB 132
6.2.3 Cassandra 150
6.3 其他存储技术 159
6.3.1 关系数据库 160
6.3.2 分布式内存数据网格 160
6.4 存储技术的选择 160
6.4.1 键-值存储 160
6.4.2 文档存储 160
6.4.3 分布式哈希表存储 161
6.4.4 内存网格 161
6.4.5 关系数据库 161
6.5 数据仓库 161
6.5.1 将Hadoop作为ETL和数据仓库 162
6.5.2 Lambda架构 166
6.6 总结 166
第二部分 流分析与可视化
第7章 流度量的交付 168
7.1 流Web应用 168
7.1.1 使用Node 169
7.1.2 用NPM管理Node项目 171
7.1.3 基于Node开发Web应用 174
7.1.4 基本的流仪表板 176
7.1.5 向Web应用加入流 180
7.2 数据可视化 190
7.2.1 HTML5 Canvas和内联SVG 190
7.2.2 数据驱动文档:D3.js 196
7.2.3 高层工具 204
7.3 移动流应用 208
7.4 总结 209
第8章 精确的聚集计算和交付 211
8.1 定时计数与求和 214
8.1.1 基于Bolt的计数 214
8.1.2 基于Trident的计数 216
8.1.3 基于Samza的计数 217
8.2 多分辨率时间序列的聚集计算 218
8.3 随机优化 222
8.4 时间序列数据的交付 223
8.4.1 用D3.js绘制带状图 224
8.4.2 高速Canvas图 225
8.4.3 地平线图 226
8.5 总结 227
第9章 流数据的统计近似 229
9.1 数值计算库 229
9.2 概率和分布 230
9.2.1 期望和方差 231
9.2.2 统计分布 232
9.2.3 离散分布 232
9.2.4 连续分布 233
9.2.5 联合分布 235
9.3 参数估计 236
9.3.1 参数推断 236
9.3.2 Delta方法 237
9.3.3 分布不等式 238
9.4 随机数产生器 238
9.5 抽样过程 242
9.5.1 从固定数据集中抽样 242
9.5.2 从流数据中抽样 243
9.5.3 有偏流抽样 244
9.6 总结 245
第10章 使用略图近似流数据 246
10.1 寄存器和哈希函数 246
10.1.1 寄存器 247
10.1.2 哈希函数 247
10.2 集合 249
10.3 Bloom Filter 251
10.3.1 算法 251
10.3.2 Bloom Filter大小的选择 253
10.3.3 并集和交集 253
10.3.4 基数估计 254
10.3.5 有趣的变体 255
10.4 Distinct Value略图 258
10.4.1 Min-Count算法 258
10.4.2 HyperLogLog算法 260
10.5 Count-Min略图 264
10.5.1 点查询 265
10.5.2 Count-Min略图的实现 265
10.5.3 Top-K和“Heavy Hitters” 266
10.5.4 范围查询和分位数查询 268
10.6 其他应用 270
10.7 总结 271
第11章 流数据的应用 272
11.1 实时数据模型 273
11.1.1 简单时间序列模型 273
11.1.2 线性模型 276
11.1.3 逻辑回归 280
11.1.4 神经网络模型 281
11.2 用模型预测 289
11.2.1 指数平滑法 289
11.2.2 回归法 291
11.2.3 神经网络法 293
11.3 监控 294
11.3.1 离群点检测 294
11.3.2 变化检测 296
11.4 实时优化 297
11.5 总结 298