欢迎光临
免费的PDF电子书下载网站

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

编辑推荐

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

内容简介


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

作者简介

作 者 简 介Byron Ellis是Spongecell公司的CTO,该公司是一个总部位于纽约的广告技术公司,在旧金山、芝加哥和伦敦设有办事处。他负责公司的研发和计算基础设施的维护工作,在加盟Spongecell之前,他是在线交互技术“领头羊”企业Liveperson公司的首席数据科学家。他还在当时世界*的广告交换公司之一adBrite担任过多项职务。他拥有哈佛大学统计学博士学位,攻读博士学位期间主要研究高吞吐量生物学实验数据中网络结构的学习方法。

 ; ; ; 技术编辑简介JoseQuinteiro有20年技术经验,参与过许多终端用户、企业、Web软件系统和应用的设计与开发工作。他对于包括前后端的设计和实现在内的全套Web技术有着丰富经验。Jose在威廉玛丽学院获得化学学士学位。

 ; ; ; Luke Hornof拥有计算机科学博士学位,曾参与创建了多个成功的高科技初创企业。他在编程语言方面发表了十多篇同行评审的论文,曾为微处理器、广告和音乐行业开发过商用软件。他目前的兴趣之一是使用数据分析技术来改善Web和移动应用。

 ; ; ; Ben Peirce在Spongecell广告技术公司负责研究工作和基础设施的管理。加盟Spongecell之前,他在医疗健康技术初创企业担任过多项职务,他还是SETMedia公司的联合创始人之一,该公司是一个视频广告技术公司。他在哈佛大学工程与应用科学学院获得博士学位,研究方向是控制系统和机器人。

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

目录

目  录

译者序

前言

致谢

作者简介

技术编辑简介

第1章 流数据简介1

1.1流数据的来源2

1.1.1运行监控2

1.1.2Web分析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.1Java18

2.3.2Scala和Clojure19

2.3.3JavaScript19

2.3.4Go语言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.3Apache ZooKeeper26

3.3.1znode27

3.3.2监视和通知28

3.3.3保持一致性28

3.3.4创建ZooKeeper集群28

3.3.5ZooKeeper本地Java客户端33

3.3.6Curator客户端39

3.3.7Curator Recipes组件45

3.4总结50

第4章 流分析中的数据流程管理52

4.1分布式数据流程52

4.1.1至少交付一次52

4.1.2“n+1”问题53

4.2Apache Kafka:高吞吐量分布式消息机制54

4.2.1设计与实现54

4.2.2配置Kafka环境57

4.2.3与Kafka代理交互65

4.3Apache Flume:分布式日志采集系统 66

4.3.1Flume agent67

4.3.2配置agent68

4.3.3Flume数据模型68

4.3.4channel选择器69

4.3.5Flume source71

4.3.6Flume sink78

4.3.7sink processor80

4.3.8Flume channel80

4.3.9Flume Interceptor81

4.3.10集成定制Flume组件83

4.3.11运行Flume agent83

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.1Storm集群的组件87

5.2.2配置Storm集群88

5.2.3分布式集群89

5.2.4本地集群92

5.2.5Storm拓扑92

5.2.6实现bolt95

5.2.7实现并使用spout99

5.2.8分布式远程过程调用104

5.2.9Trident:Storm的DSL105

5.3用Samza处理数据111

5.3.1Apache YARN111

5.3.2从YARN和Samza开始112

5.3.3将Samza集成进数据流程115

5.3.4Samza作业116

5.4总结122

第6章 流数据的存储123

6.1一致性哈希123

6.2“NoSQL”存储系统124

6.2.1Redis125

6.2.2MongoDB132

6.2.3Cassandra150

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.2Lambda架构166

6.6总结166

第二部分 流分析与可视化

第7章 流度量的交付168

7.1流Web应用168

7.1.1使用Node169

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和内联SVG190

7.2.2 数据驱动文档:D3.js196

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 Filter251

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

前沿

前  言概述及组织结构流数据处理涉及软件开发和工程领域的许多不同问题。一方面,它需要一个灵活的基础架构,能够迅速便捷地移动数据;另一方面,处理速度要“跟得上”数据采集的速度,还要能扩展,以适应源源不断的数据流,由于这个限制,流数据处理很青睐从其他领域借鉴而来的数据结构。最后,一旦数据采集和处理完毕,应该利用数据做些什么?对于这一点,有一批可以直接在流数据上运行的应用,这些应用已经在大多数相关企业中发挥作用,还有更多的应用一直处于企业的考虑之中。本书将流数据的所有这些方面糅合在一起,既可以充当大众读者的入门书籍,又对更专业的技术人员有参考价值。我们希望,通过阅读本书,你能够建立足够的自信,在企业中从头到尾实施一个流数据的概念验证项目,并尝试将其应用到生产环境。为了实现以上目标,不仅需要建立基础架构,还需要实现相关算法,为此我们将本书划分为两个独立的部分。

 ; ; ; 第一部分介绍流数据系统本身的基础架构,以及系统的运营问题。如果数据是流式的,但是仍然以批量的方式处理,那就不再是流数据,这些只是碰巧连续采集得到的批量数据,这样的数据对许多用例完全够用。但是,本书的假设是,人们已经认识到,如果数据生成后不久就可以由最终用户使用,这样会大有裨益。鉴于此,本书涵盖了完成这种任务所需要的工具和技术。

 ; ; ; 我们首先介绍流框架底层的概念和特性,包括流处理系统的各种组件。并不是所有项目在起始阶段都会用到这些组件,但所有成熟的流基础架构最终都会用到它们。然后我们在流基础架构的关键特性,即可用性、可扩展性和延迟的背景下讨论这些组件。

 ; ; ; 第一部分剩下的内容聚焦于实现或配置每个组件的具体细节。由于组件框架的广泛应用,多半已经不需要编写多少代码来实现组件。取而代之的是安装、配置,或者定制工作。

 ; ; ; 第3章和第4章介绍构建和协调数据移动系统所需要的工具。根据所处环境的不同,可能需要开发软件来直接与该系统集成,或者修改已有软件使之适应该系统。我们将讨论这两种途径的利弊。

 ; ; ; 数据一旦被移动,就必须得到处理,并最终存储起来。这是第5章和第6章的内容。这两章介绍主流的流处理软件,以及对数据存储系统的选择。

 ; ; ; 第二部分用流基础架构解决各种问题。仪表板与预警系统是流数据采集最早的应用,也是第二部分介绍的第一个应用。

 ; ; ; 第7章讨论从流环境向最终用户的数据交付问题。这是构建仪表板以及其他监控应用所使用的核心机制。一旦交付,数据就必须呈现给用户,因此,该章还包括一节内容,专门讨论如何在基于Web的环境中建立仪表板可视化。

 ; ; ; 当然,所交付的数据经常要由处理系统进行聚集计算。第8章涵盖流环境下的数据聚集计算问题,特别是对多分辨率时间序列数据的聚集计算问题,该结果数据最终会被交付给第7章讨论的仪表板应用。

 ; ; ; 对数据进行聚集计算之后,数据中有什么样的模式这个问题就浮出了水面。是否有随时间变化的趋势?某个行为是否与先前观察到的行为有明显不同?要回答这些问题,需要一些统计学和随机过程方面的知识(一般来讲,这两方面的知识可以解答关于大规模数据采集的任何问题)。第9章对统计学和概率论的基础知识进行了简要介绍。其中还介绍了统计抽样的概念,它可以用来计算比简单的聚集更加复杂的度量。

 ; ; ; 抽样是对复杂度量进行近似的传统机制,但我们还可以通过其他机制更好地计算某些度量,略图(sketch)概率数据结构就是这样的一种机制。第10章将讨论略图,这需要大量使用第9章的概率论知识。略图通常具有更快的更新速度并占用更少的内存,因此特别适合流环境。

 ; ; ; 最后,第11章讨论聚集计算之外能够应用于流数据的一些更深入的话题。篇幅所限,这一章仅对所涉及的众多话题作简要介绍,实际上每个都可以单独成书。第一个话题是来自统计学和机器学习领域的流数据模型。这些模型是预测等许多应用的基础,用来估计未来的数据值。由于数据是流式的,可以将这些预测值与实际值相比较,据此再对模型进行修正。预测的应用很广泛,其中包括第11章中讨论的异常检测。

 ; ; ; 第11章还简要介绍优化和A/B测试。如果你可以预测用户对两个不同网站设计的反应,就可以利用这些信息,向用户展示具有较好预期反应的网站设计。当然,预测并不是完美的,也有可能对各个网站的设计效果给出糟糕的估计。要改进对特定网站设计的预测,唯一途径是收集更多的数据。这样,你就需要确定各网站设计要多久展示一次,从而保证在改进预测的同时,不会由于展示了非主流的设计,而牺牲展示效果。第11章给出一种常用于解决这类问题的简单机制,称为多臂赌博机(multi-armedbandit)。利用这种机制,你可以站在一个比较高的起点上对优化问题进行更深入探索。

 ; ; ; 本书面向的读者我们曾在开篇提到过,本书意在吸引从事软件行业的广大读者,针对的是有兴趣开始涉足流数据及其管理的技术人员。正因如此,我们希望读者按顺序阅读,最终可以全面掌握流数据分析的基础知识。

 ; ; ; 即便如此,对于只熟悉这个领域的一部分内容,而对其他部分不甚了解的专家来说,本书也是值得一看的。例如,数据分析师或数据科学家可能在第9章和第11章的统计学方法方面有很强的专业背景,也可能对第7章的仪表板应用以及第8章的聚集计算技术有一定的经验,但对第10章的概率数据结构可能没有太多了解。如果不是要实际实现基础架构,而是想理解对设计的权衡是怎样影响所分析的数据的交付的,他们也可能会对前六章感兴趣。

 ; ; ; 与之类似,关注运营和基础架构方面的读者可能对第1~6章所讨论的话题颇有了解。他们可能没有接触过特定的软件,但肯定处理过许多类似的问题。本书第二部分,即第7~11章可能对他们更有吸引力。系统监控是流数据的首批应用之一。异常检测这样的工具可以在诸如健壮的错误检测机制这样的开发中派上用场。

 ; ; ; 需要的工具不管你喜欢与否,数据基础架构领域大多以Java虚拟机为基础。这里的原因比较复杂,但不管怎样,它始终是本书所需要的工具。本书中使用的软件和示例是基于Java 7开发的,通常也可以支持Java 6或Java 8。读者应确保操作系统安装了合适的Java开发工具包。

 ; ; ; 由于要使用Java,有必要安装一个编辑器。本书中的软件是用Eclipse编写的,项目也是用Maven构建系统来组织的。安装这两个软件将帮助你构建本书包含的示例。

 ; ; ; 本书也使用了其他软件包,具体安装方法会在相应的章节中讲到。

 ; ; ; 书中使用了一些基础的数学术语和公式。如果你的数学知识有些生疏,觉得这些概念有点难,Sheldon Ross的《A First Course in Probability》会对你有所帮助。

 ; ; ; 配套网站本书配套的网站中包含了每一章所有例子的代码包。每章的代码都划分成独立的模块。

 ; ; ; 有的代码在多章中共用。这种情况下,代码被复制到每个模块,以保证这些模块是自包含的。

 ; ; ; 网站还包含Samza源代码的拷贝。Samza是一个新兴的项目,其代码库更新很快,这导致在编写和编辑相关章节的时候,本书中的示例可能已经难以运行。为了避免对读者造成困扰,我们在网上放了一个能与本书中代码良好兼容的项目版本。请参考http://www.wiley.com/go/realtimeanalyticsstreamingdata。

 ; ; ; 扬帆起航闲话少说,是时候踏上实际构建流数据系统的精彩旅程了。本书所讲的技术虽不是流数据处理的独门秘籍,但却都是我付出多年心血摸索出来的经验。我个人认为这些技术都非常好用,虽然在这个激动人心的时代,新事物始终会层出不穷。不管怎样,我希望,通过阅读这本书,你至少能少走弯路。

 ; ; ; 去找一些数据,让我们扬帆起航。

 ; ; ; 致  谢在写这本书之前,每当在致谢部分看到“有太多要感谢的人”这句话,我都觉得是陈词滥调。现在我才明白,这样的话真的是发自肺腑。对于这本书,我确实有太多需要感谢的人,实在难以在这里对他们一一列举。

 ; ; ; 不过,我还是要为其中一些人的贡献专门致谢,尽管他们有的人未必知道这本书。第一个当然是Wiley出版社的Robert Elliot,他欣赏我的演讲并认为可以写成一本近400页的书。没有他,就没有本书的面世。我还要感谢Justin Langseth,他是我那次演讲的合作者,很遗憾他没有能与我合作编写本书。希望我们还有机会再次合作。还应该感谢由Kelly Talbot领导的编辑,Charlotte、Rick、Jose、Luke和Ben,是他们帮助我找到和纠正了许多错误,使项目始终按计划推进。如果书中还有什么错误,那绝对是我的问题。

 ; ; ; 我要感谢DDG所有的常客,本书中的软件至少有一半,甚至可能超过80%,都是我端着啤酒杯聊天得来的。对于一个非正式的松散聚会,这真的很值得。感谢Mike第一个邀请我一同前往,感谢Matt和Zack这些年来举办这么多活动。

 ; ; ; 最后,我要感谢我这些年来的同事们。应该为你们忍受我各种轻率计划和笨拙补救颁发奖牌。特别感谢adBrite的全体成员,我们一起做出了许多很酷的东西,这些东西仍然处于领域的前沿。感谢CarolineMoon,允许分析人员使用新奇的“Hadoop”,以及收集更多的服务器。特别感谢Daniel Issen和Vadim Geshel。我们并不是经常看法一致(可能仍然无法做到),但本书的内容很多都来源于我与他们两人的争论。

实时分析:流数据的分析与可视化技术 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:实时分析:流数据的分析与可视化技术