目前对信息高时效性、可操作性的需求不断增长,这要求软件系统在更少的时间内能处理更多的数据。随着可连接设备数量不断增加,以及在众多行业领域广泛应用,这种信息需求已无处不在。传统企业的运营系统被迫处理原先只有互联网企业才会遇到的大规模数据。这种重大转变正不断瓦解传统架构和解决方案,传统上会将在线事务处理和离线分析分割开来。与此同时,人们正在重新勾勒从数据中提取信息的意义和价值。软件框架和基础设施也在不断进化,以适应这种新场景。
具体地说,数据的生成可以看作一连串发生的离散事件,这些事件流会伴随着不同的数据流、操作和分析,都会由一个通用的软件框架和基础设施来处理。
Storm正是□流行的实时流计算框架之一,它提供了可容错分布式计算所要求的基本原语和保障机制,可以满足大容量关键业务应用的需求。它不但是一套技术的整合,也是一种数据流和控制的机制。很多大公司都将Storm作为大数据处理平台的核心部分。
尝试使用本书中介绍的设计模式,你将学到开发、部署、运营数据处理的流程,它具有每天或者每小时处理上亿次事务的能力。
本书介绍了多种分布式计算相关的主题,包括设计和集成的模式,还介绍了这些技术常见的适用领域和具体应用。本书通过实际示例,从□简单的topology出发,首先向用户介绍了Storm基础,然后通过更复杂的示例,逐步引入Storm的高级概念、更细致的部署方案以及运营中需要关注的事项。
主要内容
□□章介绍了使用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系统,企业可以在同一套基础设施上同时运行与利用实时和批处理系统。
□□0章提供了在云环境下运行和部署Storm系统的□佳实践。详细地说,你可利用一套为云计算服务的库Apache Whirr,在Amazon Web Services(AWS)Elastic Compute Cloud(EC2)上部署和配置Storm及其相关的支撑组件。此外,你还可以利用Vagrant工具在虚拟机环境下建立开发和测试的集群环境。
……