目前对信息高时效性、可操作性的需求不断增长,这要求软件系统在更少的时间内能处理更多的数据。随着可连接设备数量不断增加,以及在众多行业领域广泛应用,这种信息需求已无处不在。传统企业的运营系统被迫处理原先只有互联网企业才会遇到的大规模数据。这种重大转变正不断瓦解传统架构和解决方案,传统上会将在线事务处理和离线分析分割开来。与此同时,人们正在重新勾勒从数据中提取信息的意义和价值。软件框架和基础设施也在不断进化,以适应这种新场景。
具体地说,数据的生成可以看作一连串发生的离散事件,这些事件流会伴随着不同的数据流、操作和分析,都会由一个通用的软件框架和基础设施来处理。
Storm正是*流行的实时流计算框架之一,它提供了可��错分布式计算所要求的基本原语和保障机制,可以满足大容量关键业务应用的需求。它不但是一套技术的整合,也是一种数据流和控制的机制。很多大公司都将Storm作为大数据处理平台的核心部分。
尝试使用本书中介绍的设计模式,你将学到开发、部署、运营数据处理的流程,它具有每天或者每小时处理上亿次事务的能力。
本书介绍了多种分布式计算相关的主题,包括设计和集成的模式,还介绍了这些技术常见的适用领域和具体应用。本书通过实际示例,从*简单的topology出发,首先向用户介绍了Storm基础,然后通过更复杂的示例,逐步引入Storm的**概念、更细致的部署方案以及运营中需要关注的事项。
主要内容
第1章介绍了使用Storm进行分布式流式计算的核心概念。分布式单词计数这个例子中展示的数据结构、技术和设计模式都是后续进行更复杂计算的基础。在该章中,我们会对Storm计算架构有一个基本了解。还将学会搭建Storm开发环境,了解开发和调试Storm应用的技术。
第2章进一步介绍Storm技术架构和安装部署Storm集群的过程。在该章中,我们会通过配置工具Puppet来自动化安装和部署一个多节点Storm集群。
第3章主要介绍Trident topology。Trident在Storm基础之上提供了**抽象,抽象了事务处理和状态管理的细节。该章使用Trident框架处理、聚合、过滤来自传感器的数据,以检测传染病是否爆发。
第4章介绍使用Storm和Trident进行实时趋势分析。实时趋势分析引入了在数据流中进行识别的模式。在该章中,你将会整合Apache Kafka队列并且通过实现一个滑动窗口来计算移动平均数。
第5章介绍了使用Storm进行基于图的数据分析,首先将数据持久化到图形数据库,再通过查询数据来发现关系。图形数据库将数据按照顶点、边、属性的图形结构进行存储,聚焦于实体间的关系。在该章中,我们将Strom和一种流行的图形数据库Titan进行整合,使用Twitter作为数据源。
第6章介绍在Storm上使用递归实现一个典型的人工智能算法。该章展现了Strom的局限性,并检视设计模式来适应这些局限。通过分布式远程调用(Distributed Remote Procedure Call, DRPC),你会实现一个提供同步查询服务的Storm topology,用来决定井字棋游戏下一步怎样走*好。
第7章演示整合Storm和非事务型系统的复杂性。为了支持这种整合,介绍一种通过ZooKeeper进行分布式状态管理的设计模式。该章通过整合Strom和开源探索性分析架构Druid,实现一个可配置的实时系统来分析金融事件。
第8章介绍Lambda系统架构的概念,结合实时系统和批处理来构建一个可纠错的分析系统。在第7章的基础上,你将会融入Hadoop的基础设施并且检视如何使用一个MapReduce job对Druid中可能出现的主机故障事件进行纠错。
第9章演示将一个Hadoop上运行的Pig语言编写的批处理job转化为一个实时的Storm topology。你可以利用Storm-YARN来实现这个功能,这个工具可以使用户使用YARN来部署和运行Storm集群。在Hadoop上运行Storm系统,企业可以在同一套基础设施上同时运行与利用实时和批处理系统。
第10章提供了在云环境下运行和部署Storm系统的*佳实践。详细地说,你可利用一套为云计算服务的库Apache Whirr,在Amazon Web Services(AWS)Elastic Compute Cloud(EC2)上部署和配置Storm及其相关的支撑组件。此外,你还可以利用Vagrant工具在虚拟机环境下建立开发和测试的集群环境。
预备知识
本书中用到的软件如下表所示。
章 节 需要的软件
1 Storm (0.9.1)
2 ZooKeeper (3.3.5)
Java (1.7)
Puppet (3.4.3)
Hiera (1.3.1)
3 Trident (配套Storm 0.9.1)
4 Kafka (0.7.2)
OpenFire (3.9.1)
5 Twitter4J (3.0.3)
Titan (0.3.2)
Cassandra (1.2.9)
6 无*新软件
7 MySQL (5.6.15)
Druid (0.5.58)
8 Hadoop (0.20.2)
9 Storm-YARN (1.0-alpha)
Hadoop (2.1.0-beta)
10 Whirr (0.8.2)
Vagrant (1.4.3)
面向的读者
初学者和**用户都可以从本书获益。本书在真实示例的基础上,描述了多种实用的分布式计算模式。书中介绍了Storm和Trident的核心原语,以及成功部署和运营系统的关键技术。
虽然本书主要讲述Storm相关的Java开发,但其中的设计模式同样适用于其他编程语言。书中的小窍门、技术和实现方法对架构师、开发人员和运维人员都具有参考价值。
Hadoop爱好者会发现,这是一本很好的Storm入门书籍,书中举例说明这两种系统如何优势互补,提供了将批处理运算迁移到实时分析的一种**途径。
本书提供了Storm应用于多个问题和行业的具体示例,这些例子应该能够在其他领域中举一反三,解决在有限时间内处理大量数据的问题。同时,解决方案设计师、商业分析师也能从本书介绍的高层系统架构和技术中获益。
读者反馈
我们随时欢迎您的反馈。如果您有任何喜欢或者不喜欢本书的地方,都请告知我们,这将促使我们优化读者*关心的内容。若有反馈,可发送邮件到feedbak@packtpub.com,邮件标题中请包含本书名。
如果您是某一领域方面的专家,并且有兴趣写一本或者参与一本书,请参考作者指南www.packtpub.com/authors。
用户支持
对于购买了Packet出版社书籍的读者,我们有多种途径帮助你*大限度的利用本书。
下载示例代码
可以在http://www.packetpub.com下载到通过packet账户购买的所有书籍的示例代码。如果你通过其他途径购买这本书,可以访问http://www.packetpub.com/support,通过邮箱注册,然后示例代码会通过邮箱发送。
勘误表
尽管我们已经非常用心确保书籍内容的准确性,仍然有错误可能发生。如果您发现书中的任何错误(可能是错字或者代码错误)请将错误报告给我们,不胜感激。这样会避免其他用户对同样的错误造成困惑,有助于我们在后续版本不断完善这本书。勘误报告请在http://www.packtpub.com/submit-errata进行上报,先选取本书,点击errata submission form链接,然后填入详细的勘误信息即可。勘误内容经确认后就会上传到网站上,或者添加到书籍当前的勘误表中。当前已知的刊物内容可以通过访问http://www.packtpub.com/support进行查看。
盗版
互联网上的盗版行为是所有出版媒体共同面临的问题。Packt出版社采取严厉措施来保护在版权和许可。如果你偶然发现互联网上Packt出版社的任何作品,任何形式的非法拷贝,请您立刻提供网址和站点名称以便我们追责。请通过copyright@packtpub.com联系我们提供有盗版嫌疑连接。我们非常感谢这种保护作者和出版社权益的帮助,这将有利于提供更有价值的作品。
问题
如果您对本书有任何疑问,可以通过questions@packtpub.com联系我们,我们会尽力解答。