首页>参考读物>计算机科学与技术>软件与程序设计

Storm分布式实时计算模式
作者 : (美)P. Taylor Goetz  Brian O'Neill著
译者 : 董昭 译
丛书名 : 大数据技术丛书
出版日期 : 2014-12-08
ISBN : 978-7-111-48438-7
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 268
开本 : 16
原书名 : Storm Blueprints: Patterns for Distributed Real-time Computation
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

Apache Storm 项目核心贡献者亲笔撰写,涵盖多种分布式计算相关主题,是深入理解Storm分布式实时计算的翔实指南
通过大量的示例,全面而系统地讲解Storm分布式实时计算的核心概念及应用,并针对不同的应用场景,给出多种基于Storm的设计模式,而且提供示例源码,便于读者参考设计并实现自己的Storm应用

Storm是最流行的实时流计算框架之一,它提供了可容错分布式计算所要求的基本原语和保障机制,可满足大容量关键业务应用的需求。Storm不仅是一种集成技术,也是一种数据流和控制机制,已经成为很多大公司大数据处理平台的核心部分。
本书从简单的Storm topology示例出发,基于实际应用场景介绍Storm的基本功能,并详细讲解Trident和分布式状态等高级概念,以及与Druid和Titan的集成模式。通过阅读本书,读者将了解Storm和Trident的基本原理,并将这些原理和应用场景对应起来,解决实际问题。

通过阅读本书,你将学到:
Storm的基本原理。
在伪集群模式和分布式集群模式下安装和配置Storm。
熟悉Trident和分布式状态的基本原理。
分布式系统数据流的设计模式。
与持久化存储机制的集成模式,如Titan。
利用YARN部署和运行Storm集群。
通过分布式存储获取持续可用性和容错机制。
了解集中日志机制和处理方法。
实现混合持久化和分布式事务处理。
通过点击流分析计算广告活动的效果。

作者简介
P. Taylor Goetz Apache Storm项目核心贡献者以及发布经理,自2011年10月Storm项目首次开源至今都参与其中,具有长期的Storm使用和开发经验。作为Storm用户社区中的活跃贡献者,Taylor领导了一系列开源项目,旨在使企业能够将Storm集成到不同的基础设施上。
Brian O’Neill 现就职于Health Market Science(HMS)公司,任首席技术官,重点进行数据管理和医疗领域数据分析。他已经担任技术主管超过15年,被公认为大数据领域的权威。作为系统架构师,他有着应对各种不同场景的经验,从初创公司到财富500强公司。他信奉开源精神,对多个项目做出了贡献。他领导的项目扩展了Cassandra数据库,并且将索引引擎、分布式处理框架、分析引擎集成到该数据库中。他荣获了2013年InfoWorld技术领导力大奖。

译者简介
董昭  腾讯安全平台部的应用运维安全工程师,负责腾讯Web业务的漏洞防护等相关工作,研究兴趣为网络安全、Linux后台开发、大数据等。

内容简介
本书由Apache Storm 项目核心贡献者亲笔撰写,融合了作者丰富的Storm实战经验,通过大量示例,全面而系统地讲解使用Storm进行分布式实时计算的核心概念及应用,并针对不同的应用场景,给出多种基于Storm的设计模式,为读者快速掌握Storm分布式实时计算提供系统实践指南。
全书分为10章:第1章介绍使用Storm建立一个分布式流式计算应用所涉及的核心概念,包括Storm的数据结构、开发环境的搭建,以及Storm程序的开发和调试技术等;第2章详细讲解Storm集群环境的安装和搭建,以及如何将topology部署到分布式环境中;第3章通过传感器数据实例详细介绍Trident topology;第4章讲解如何使用Storm和Trident进行实时趋势分析;第5章介绍如何使用Storm进行图形分析,将数据持久化存储在图形数据库中,通过查询数据来发现其中潜在的联系;第6章讲解如何在Storm上使用递归实现一个典型的人工智能算法;第7章演示集成Storm和非事务型系统的复杂性,通过集成Storm和开源探索性分析架构Druid实现一个可配置的实时系统来分析金融事件。第8章探讨Lambda体系结构的实现方法,讲解如何将批处理机制和实时处理引擎结合起来构建一个可纠错的分析系统;第9章讲解如何将Pig脚本转化为topology,并且使用Storm-YARN部署topology,从而将批处理系统转化为实时系统;第10章介绍如何在云服务提供商提供的主机环境下部署和运行Storm。

图书前言

目前对信息高时效性、可操作性的需求不断增长,这要求软件系统在更少的时间内能处理更多的数据。随着可连接设备数量不断增加,以及在众多行业领域广泛应用,这种信息需求已无处不在。传统企业的运营系统被迫处理原先只有互联网企业才会遇到的大规模数据。这种重大转变正不断瓦解传统架构和解决方案,传统上会将在线事务处理和离线分析分割开来。与此同时,人们正在重新勾勒从数据中提取信息的意义和价值。软件框架和基础设施也在不断进化,以适应这种新场景。
具体地说,数据的生成可以看作一连串发生的离散事件,这些事件流会伴随着不同的数据流、操作和分析,都会由一个通用的软件框架和基础设施来处理。
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联系我们,我们会尽力解答。

上架指导

计算机\程序设计

封底文字

Storm是最流行的实时流计算框架之一,它提供了可容错分布式计算所要求的基本原语和保障机制,满足大容量关键业务应用的需求。Storm不仅是一种集成技术,也是一种数据流和控制机制,已经成为很多大公司大数据处理平台的核心部分。
本书从简单的Strom topology示例出发,基于实际应用场景介绍Storm的基本功能,并详细讲解Trident和分布式状态等高级概念,以及与Druid和Titan的集成模式。通过阅读本书,读者将了解Storm和Trident的基本原理,并将这些原理和应用场景对应起来,解决实际问题。

通过阅读本书,你将学到:
• Storm的基本原理。
• 在伪集群模式和分布式集群模式下安装和配置Storm。
• 熟悉Trident和分布式状态的基本原理。
• 分布式系统数据流的设计模式。
• 与持久化存储机制的集成模式,如Titan。
• 利用YARN部署和运行Storm集群。
• 通过分布式存储获取持续可用性和容错机制。
• 了解集中日志机制和处理方法。
• 实现混合持久化和分布式事务处理。
• 通过点击流分析计算广告活动的效果。

作者简介

(美)P. Taylor Goetz  Brian O'Neill著:暂无简介

译者简介

董昭 译:暂无简介

译者序

大数据概念在各行业已然形成了热潮,犹胜当年的云计算,近期甚至被列入了国家重点发展规划。DataSift利用Twitter上的情感监控预测Facebook股价波动,Google预测世界杯比赛结果,大数据应用的生动案例每每会引发无限遐想:大数据能否对我们所处的行业或领域带来新气象、新思路?迈出尝试的第一步非常重要。
要从海量数据中提取加工对业务有用的信息,选取合适的技术将事半功倍,省去了重新造轮子的烦恼。对海量数据进行批处理运算,Hadoop依旧保持着无法撼动的地位。但在对实时性要求较高的应用场景中,Hadoop就显得力不从心。它需要将数据先落地存储到HDFS上,然后再通过MapReduce进行计算。这样的批处理运算流程使它很难将延时缩小到秒级。
Storm是基于数据流的实时处理系统,提供了大吞吐量的实时计算能力。每条数据到达系统时,立即在内存中进入处理流程,并在很短的时间内处理完成。实时性要求较高的数据分析场景,都可以尝试使用Storm作为技术解决方案。
我们已经决定利用大数据改善所在领域的工作,并选定Storm实时流式计算框架作为技术解决方案。这时候的问题是,如何将Storm和工作中的实际场景关联起来?这个开源项目的文档并不是非常丰富,源码中示例也很简单。类似的问题可能困扰过不少Storm用户。
我在看到本书英文版的介绍时,就感觉到,这正是我想要的,早有这本书能省去多少学习成本!本书并没有非常深入介绍Storm的内部实现,而是一本应用指南。其中最有价值的部分,是通过大量翔实的示例,使用Storm解决不同的实际应用场景,提出多种基于Storm的设计模式。读者完全可以参考书中示例和源码,来设计并实现自己的Storm应用。书中还简要介绍了Storm基本概念,以及大规模部署集群的方案,这些都是非常实用的内容。
作为Storm的一个忠实用户,能够承担本书的翻译工作实属荣幸。翻译的过程,也是深入学习加深了解的过程。学到作者丰富的Storm实践经验,是本次翻译的最大收获。希望这些经验也能够帮助读者少走弯路,快速高效地使用这个工具。
翻译过程中得到了很多人的帮助。首先感谢家人的包容和支持,困难时总有你们的鼓励。感谢腾讯安全平台部的同事们在学习工作中给予的帮助。感谢好友何双宁在翻译过程中提出的建议和探讨。感谢机械工业出版社编辑们的信任和支持。
非常高兴能将这本书分享给大家,也期望有兴趣的朋友一起探讨,共同进步。如果你有任何问题和建议,请联系我(appledzshr@live.cn)。

图书目录

译者序
前言
作者简介
第1章 分布式单词计数 1
1.1 Storm topology的组成部分——stream、spout和bolt 1
1.1.1 stream 2
1.1.2 spout 2
1.1.3 bolt 2
1.2 单词计数topology的数据流 3
1.2.1 语句生成spout 3
1.2.2 语句分割bolt 3
1.2.3 单词计数bolt 4
1.2.4 上报bolt 4
1.3 实现单词计数topology 4
1.3.1 配置开发环境 4
1.3.2 实现SentenceSpout 5
1.3.3 实现语句分割bolt 6
1.3.4 实现单词计数bolt 7
1.3.5 实现上报bolt 8
1.3.6 实现单词计数topology 10
1.4 Storm的并发机制 12
1.4.1 WordCountTopology的并发机制 13
1.4.2 给topology增加worker 14
1.4.3 配置executor和task 14
1.5 理解数据流分组 17
1.6 有保障机制的数据处理 20
1.6.1 spout的可靠性 20
1.6.2 bolt的可靠性 21
1.6.3 可靠的单词计数 22
总结 23
第2章 配置Storm集群 24
2.1 Storm集群的框架 24
2.1.1 理解nimbus守护进程 25
2.1.2 supervisor守护进程的工作方式 26
2.1.3 Apache ZooKeeper简介 26
2.1.4 Storm的DRPC服务工作机制 27
2.1.5 Storm UI 27
2.2 Storm技术栈简介 28
2.2.1 Java和Clojure 28
2.2.2 Python 29
2.3 在Linux上安装Storm 29
2.3.1 安装基础操作系统 30
2.3.2 安装Java 30
2.3.3 安装ZooKeeper 30
2.3.4 安装Storm 30
2.3.5 运行Storm守护进程 31
2.3.6 配置Storm 33
2.3.7 必需的配置项 34
2.3.8 可选配置项 35
2.3.9 Storm可执行程序 36
2.3.10 在工作站上安装Storm可执行程序 36
2.3.11 守护进程命令 37
2.3.12 管理命令 37
2.3.13 本地调试/开发命令 39
2.4 把toplogy提交到集群中 40
2.5 自动化集群配置 42
2.6 Puppet的快速入门 43
2.6.1 Puppet manifest文件 43
2.6.2 Puppet类和模块 44
2.6.3 Puppet模板 45
2.6.4 使用Puppet Hiera来管理环境 46
2.6.5 介绍Hiera 46
总结 48
第3章 Trident和传感器数据 49
3.1 使用场景 50
3.2 Trident topology 50
3.3 Trident spout 52
3.4 Trident运算 57
3.4.1 Trident filter 58
3.4.2 Trident function 59
3.5 Trident聚合器 63
3.5.1 CombinerAggregator 63
3.5.2 ReducerAggregator 63
3.5.3 Aggregator 64
3.6 Trident状态 65
3.6.1 重复事务型状态 69
3.6.2 不透明型状态 70
3.7 执行topology 72
总结 73
第4章 实时趋势分析 74
4.1 应用场景 75
4.2 体系结构 75
4.2.1 数据源应用程序 75
4.2.2 logback Kafka appender 76
4.2.3 Apache Kafka 76
4.2.4 Kafka spout 76
4.2.5 XMPP服务器 76
4.3 安装需要的软件 77
4.3.1 安装Kafka 77
4.3.2 安装OpenFire 78
4.4 示例程序 78
4.5 日志分析topology 84
4.5.1 Kafka spout 84
4.5.2 JSON project function 85
4.5.3 计算移动平均值 86
4.5.4 添加一个滑动窗口 87
4.5.5 实现滑动平均function 91
4.5.6 按照阈值进行过滤 92
4.5.7 通过XMPP发送通知 94
4.6 最终的topology 96
4.7 运行日志分析topology 98
总结 99
第5章 实时图形分析 100
5.1 使用场景 101
5.2 体系结构 102
5.2.1 Twitter客户端 102
5.2.2 Kafka spout 102
5.2.3 Titan分布式图形数据库 103
5.3 图形数据库简介 103
5.3.1 访问图——TinkerPop栈 104
5.3.2 使用Blueprints API操作图形 105
5.3.3 通过Gremlin shell操作图形 106
5.4 软件安装 107
5.5 使用Cassandra存储后端设置Titan 109
5.5.1 安装Cassandra 109
5.5.2 使用Cassandra后端启动Titan 109
5.6 图数据模型 110
5.7 连接Twitter数据流 111
5.7.1 安装Twitter4J客户端 112
5.7.2 OAuth配置 112
5.7.3 TwitterStreamConsumer类 112
5.7.4 TwitterStatusListener类 113
5.8 Twitter graph topology 115
5.9 实现GraphState 116
5.9.1 GraphFactory 117
5.9.2 GraphTupleProcessor 117
5.9.3 GraphStateFactory 117
5.9.4 GraphState 118
5.9.5 GraphUpdater 119
5.10 实现GraphFactory 119
5.11 实现GraphTupleProcessor 120
5.12 组合成TwitterGraphTopology类 121
5.13 使用Gremlin查询图 122
总结 123
第6章 人工智能 124
6.1 为应用场景进行设计 125
6.2 确立体系结构 128
6.2.1 审视设计中的挑战 128
6.2.2 实现递归 128
6.2.3 解决这些挑战 132
6.3 实现体系结构 133
6.3.1 数据模型 133
6.3.2 检视Recursive Topology 136
6.3.3 队列交互 138
6.3.4 function和filter 140
6.3.5 研究Scoring Topology 141
6.3.6 分布式远程命令调用(DRPC) 146
总结 152
第7章 整合Druid进行金融分析 153
7.1 使用场景 154
7.2 集成一个非事务系统 155
7.3 topology 158
7.3.1 spout 159
7.3.2 filter 161
7.3.3 状态设计 162
7.4 实现体系结构 165
7.4.1 DruidState 166
7.4.2 实现StormFirehose对象 169
7.4.3 在ZooKeeper中实现分片状态 174
7.5 执行实现的程序 175
7.6 检视分析过程 176
总结 179
第8章 自然语言处理 180
8.1 Motivating Lambda结构 181
8.2 研究使用场景 183
8.3 实现Lambda architecture 184
8.4 为应用场景设计topology 185
8.5 设计的实现 186
8.5.1 TwitterSpout/TweetEmitter 187
8.5.2 function 188
8.6 检视分析逻辑 191
8.7 Hadoop 196
8.7.1 MapReduce概览 196
8.7.2 Druid安装 197
总结 204
第9章 在Hadoop上部署Storm进行广告分析 205
9.1 应用场景 205
9.2 确定体系结构 206
9.2.1 HDFS简介 208
9.2.2 YARN简介 208
9.3 配置基础设施 211
9.3.1 Hadoop基础设施 211
9.3.2 配置HDFS 212
9.4 部署分析程序 217
9.4.1 以Pig为基础执行批处理分析 217
9.4.2 在Storm-YARN基础上执行实时分析 218
9.5 执行分析 223
9.5.1 执行批处理分析 223
9.5.2 执行实时分析 224
9.6 部署topology 229
9.7 执行toplogy 229
总结 230
第10章 云环境下的Storm 231
10.1 Amazon Elastic Compute Cloud简介 232
10.1.1 建立AWS帐号 232
10.1.2 AWS管理终端 232
10.1.3 手工启动一个EC2实例 234
10.2 Apache Whirr简介 236
10.3 使用Whirr配置Storm集群 237
10.4 Whirr Storm简介 239
10.5 Vagrant简介 243
10.5.1 安装Vagrant 243
10.5.2 创建第一个虚拟机 244
10.6 生成Storm安装准备脚本 247
10.6.1 ZooKeeper 247
10.6.2 Storm 248
10.6.3 Supervisord 249
总结 252

教学资源推荐
作者: 刘振安 刘燕君 唐军 编著
作者: (美)Y. Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: 朱鸣华 罗晓芳 董明 孟军 汪德刚 编著
作者: 吴黎兵 熊建强 杨鏖丞
参考读物推荐
作者: Jonathan Knudsen
作者: 王灼洲 著
作者: 许晓斌 著