《实时分析 流数据的分析与可视化技术》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)拜伦·埃利斯著;王晓伟译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:7111532163
  • 页数:302 页
图书介绍:本书共11章。第1章介绍常见的流数据的来源、应用以及三个重要特性:持续交付、结构松散和高基数,并阐释对流数据使用基础架构和算法的重要性。第2~6章介绍实时流架构的各组件涉及的软件、框架和方法。第2章概述实时流架构设计涉及的组件、特性、编程语言等。第3章介绍实时流架构的服务配置和协调,重点介绍协调服务器ZooKeeper。第4章阐述实时流架构中数据流程的管理,涉及用来管理数据流程的两个软件包Kafka和Flume。第5章分析流数据的处理,涉及如何用Storm或Samza来处理数据。第6章介绍流数据的存储问题。第7~11章重点关注流数据架构的应用构建问题。第7章讨论从流环境向最终用户的数据交付问题。这是构建仪表板以及其他监控应用所使用的核心机制。第8章涵盖流环境下的聚集计算问题,特别是对多分辨率时间序列数据的聚集计算问题。第9章简要介绍统计学和概率论的基础知识。第10章讨论略图,略图通常具有更快的更新速度和更小的内存占用空间,特别适合流环境。第11章讨论聚集计算之外能够应用于流数据的一些更深入的话题。

第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

第一部分 流分析架构 10

第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

第二部分 流分析与可视化 168

第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