发表于2024-12-26
本书是一本指导Storm用户实践应用的指南,从Storm组件的应用细节、Storm的代码逻辑,到如何优化拓扑性能,以及如何在生产环境中部署Storm集群,作者将TheLadders的项目实践经验都整理归纳并在本书中完整呈现,配上大量图例说明,还附带了应用代码演示,使读者可以在短时间内学到作者花费多年才总结出来的Storm知识精华。
目 录?Contents
译者序
序
前言
致谢
关于本书
关于原书封面插图
第1章 Storm简介 1
1.1 什么是大数据 1
1.1.1 大数据的四大特性 2
1.1.2 大数据工具 3
1.2 Storm如何应用于大数据应用场景 5
1.3 为什么你希望使用Storm 9
1.4 小结 10
第2章 Storm核心概念 11
2.1 问题定义:GitHub提交数监控看板 11
2.1.1 数据:起点和终点 12
2.1.2 分解问题 12
2.2 Storm基础概念 13
2.2.1 拓扑 13
2.2.2 元组 15
2.2.3 流 16
2.2.4 spout 17
2.2.5 bolt 18
2.2.6 流分组 20
2.3 在Storm中实现GitHub提交数监控看板 22
2.3.1 建立一个Storm工程 22
2.3.2 实现spout 23
2.3.3 实现bolt 26
2.3.4 集成各个部分组成拓扑 29
2.4 小结 30
第3章 拓扑设计 31
3.1 拓扑设计方法 32
3.2 问题定义:一个社交热力图 32
3.3 将解决方案映射至Storm的逻辑 33
3.3.1 考虑数据流本身施加的要求 33
3.3.2 将数据点表示为元组 34
3.3.3 确定拓扑组成的步骤 35
3.4 设计的初步实现 38
3.4.1 spout:从数据源读取数据 38
3.4.2 bolt:连接至外部服务 39
3.4.3 bolt:将数据寄放在内存里 41
3.4.4 bolt:持久化存储到数据库 45
3.4.5 定义组件间的流分组策略 47
3.4.6 在本地集群模式中构建一个拓扑 48
3.5 扩展拓扑 49
3.5.1 理解Storm中的并行机制 50
3.5.2 调整拓扑配置来解决设计中遗留的瓶颈 54
3.5.3 调整拓扑以解决数据流中固有的瓶颈 60
3.6 拓扑的设计范式 63
3.6.1 分解为功能组件的设计方法 65
3.6.2 基于重分配来分解组件的设计方法 65
3.6.3 最简单的功能组件与最少的重分配次数 69
3.7 小结 70
第4章 设计健壮的拓扑 71
4.1 对可靠性的要求 71
4.2 问题定义:一个信用卡授权系统 72
4.2.1 有重试特性的概念性解决方案 72
4.2.2 定义数据点 74
4.2.3 在Storm上实现带有重试特性的方案 74
4.3 bolt基础实现 76
4.3.1 AuthorizeCreditCard的实现 76
4.3.2 ProcessedOrderNotification的实现 77
4.4 消息处理保障 78
4.4.1 元组状态:处理完成或失败 78
4.4.2 bolt中的锚定、应答和容错 80
4.4.3 spout在消息处理保障中的角色 84
4.5 回放语义 87
4.5.1 Storm中可靠性的级别 87
4.5.2 在Storm拓扑中检查仅一次处理 88
4.5.3 检查拓扑中的可靠性保障 89
4.6 小结 94
第5章 拓扑由本地到远程的实施 95
5.1 Storm集群 96
5.1.1 解析工作结点 98
5.1.2 基于信用卡授权拓扑的上下文来理解工作结点 99
5.2 Storm集群容错中的快速失败机制 100
5.3 安装Storm集群 101
5.3.1 配置Zookeeper集群 101
5.3.2 在 Storm 的主结点和工作结点上安装依赖组件 102
5.3.3 安装Storm到主结点和工作结点 102
5.3.4 通过storm.yaml配置主结点和工作结点 102
5.3.5 在监督机制下启动Nimbus和Supervisor 103
5.4 在Storm集群上运行拓扑 104
5.4.1 重新考虑如何将拓扑组件组合在一起 104
5.4.2 在本地模式下运行拓扑 105
5.4.3 在一个远程 Storm 集群上运行拓扑 105
5.4.4 在一个远程Storm集群上部署拓扑 106
5.5 Storm UI及其在集群中的角色 107
5.5.1 Storm UI:Storm集群概要 107
5.5.2 Storm UI:独立拓扑概要 111
5.5.3 Storm UI:独立spout/bolt概要 115
5.6 小结 118
第6章 对Storm进行调优 120
6.1 问题定义:Daily Deals!重生版 121
6.1.1 创建概念性解决方案 121
6.1.2 将方案转换为Storm设计 122
6.2 初始化实施 122
6.2.1 spout:读取自一个数据源 124
6.2.2 bolt:查找推荐商品 125
6.2.3 bolt:为每个商品查询详细信息 126
6.2.4 bolt:保存推荐的商品详情 127
6.3 调优:我想为它提速 128
6.3.1 Storm UI:调优的定位工具 128
6.3.2 为性能值建立一个基线集 130
6.3.3 判断瓶颈 131
6.3.4 spout:控制数据流入拓扑的速率 135
6.4 延迟率:当外部系统依然能正常工作时 137
6.4.1 在拓扑中模拟延迟 137
6.4.2 延迟的外因和内因 139
6.5 Storm的指标统计API 143
6.5.1 使用Storm的内建
CountMetric 143
6.5.2 设置一个指标接收器 144
6.5.3 创建一个自定义的SuccessRateMetric 145
6.5.4 创建一个自定义的MultiSuccessRateMetric 147
6.6 小结 149
第7章 资源冲突 150
7.1 调整一个工作结点上运行的工作进程数量 152
7.1.1 问题 152
7.1.2 解决方案 152
7.1.3 讨论 153
7.2 修改工作进程(JVM)上的内存分配 153
7.2.1 问题 153
7.2.2 解决方案 154
7.2.3 讨论 154
7.3 定位拓扑上运行的工作结点/进程 154
7.3.1 问题 154
7.3.2 解决方案 155
7.3.3 讨论 155
7.4 在一个Storm集群中的工作进程冲突 156
7.4.1 问题 157
7.4.2 解决方案 157
7.4.3 讨论 158
7.5 在一个工作进程(JVM)中的内存冲突 159
7.5.1 问题 162
前 言?Preface在TheLadders,我们从Storm刚发布时就开始使用(那时的版本号还是0.5.x)。刚开始,我们只在一些非关键的业务流程上部署Storm,在很长的一段时间里,我们的Storm集群都一直处于持续运行的状态,且十分稳定。正因为没出过什么问题,所以我们也没花太多的心思在上面。直到需要应对更多业务时,我们意识到Storm刚好是最合适的解决方案,可结果在实施的过程中暴露出了各种各样的问题。例如,我们需要在生产环境中去应对资源争夺,缺乏对底层运行原理的充分认知,不断寻找优化性能的次优方案,面临缺少可视化的系统运行状态监控,等等。
这促使我们花费大量的时间和精力去研究本书中即将呈现的内容。在学习理解Storm的过程中,我们多次翻阅了所有可找得到的文档,深入研究相关源代码,整理最适合的Storm解决方案,不断总结“最佳实践”,并且我们还增加了自定义的监控系统,便于更有效地排查故障和优化方案。
你可以在网上轻松查到有关Storm的原理文档,但我们发现,市面上依然缺少可以基于生产环境,指导使用Storm的实践应用文档。我们为此在博客上撰写了大量有关Storm的使用经验,所以当Manning找到我们希望合作一本Storm书籍时,大家一拍即合。我们有太多的知识想和大家一起分享,希望可以帮助大家少走我们曾走过的弯路,避开一些我们曾踩过的坑。
虽然我们分享出来的内容主要是基于在生产环境中,如何对Storm集群做优化、调试和故障排查,但我们更希望强调这里对Storm原理所需要的深入理解,同时展示出Storm的灵活性和广泛适用性,即使我们仅能代表众多使用Storm公司中的一员。
在本书中,我们将尽可能演示基于Storm下不同类型的应用案例,讲解Storm的核心概念,以便更容易理解如何在生产环境中执行优化、调试和故障排查。希望这种形式能适用于不同层次的读者,无论是刚接触Storm的新人,还是拥有丰富经验而且遇到过和我们有相似经历的开发者。
本书绝对是一个团队协作的结晶,无论是来自Manning的伙伴,还是来自TheLadders的同事,大家都从最开始就尽可能地支持我们,耐心地协助我们完成测试和验证所有想法。
无论你的Storm使用经验处于什么样的层次,都希望本书能对你有所帮助,我们也很享受撰写本书的过程,因为每一天我们都学到了更多关于Storm的知识。
致 谢?Acknowledgements感谢TheLadders所有为我们提供反馈和支持的同事,无论如何,这都是一本属于集体的书,指导着我们在集群上实现更多更酷的功能。
也感谢来自Manning并为本书撰写提供大量帮助的伙伴,这是一个很棒的团队,在合作期间我们从他们身上学到了很多关于写作的知识。特别感谢编辑Dan Maharry,从第1章开始一直到最后一章完成,他为第一次写书的我们提供了大量的帮助,指导我们在错误和挫折中成长。
感谢所有参与本书的技术审校人员,感谢他们贡献了自己私人的时间来核实书中的各技术要点:Antonios Tsaltas,Eugene Dvorkin,Gavin Whyte,Gianluca Righetto,Ioamis Polyzos,John Guthrie,Jon Miller,Kasper Madsen,Lars Francke,Lokesh Kumar,Lorcon Coyle,Mahmoud Alnahlawi,Massimo Ilario,Michael Noll,Muthusamy Manigandan,Rodrigo Abreau,Romit Singhai,Satish Devarapalli,Shay Elkin,Sorbo Bagchi以及Tanguy Leroux。其中我要着重感谢Michael Rose,感谢他为本书提供了大量高质量的反馈,可以说是本书最重要的技术审校人员。
感谢那些创造了Storm的人,没有他们,我们就不会有日夜奋斗的理由!我们还会坚持使用Storm,也期待未来Storm可以带来更新的改进。
感谢Andrew Montalenti在我们早期手稿中提供的反馈,这给了我们很大的启发,并支撑我们完成了本书,他写的推荐序也很棒,我们没办法要求更多了。
最后还要感谢Eleanor Roosevelt,她那句被大量错误引用的励志名言“美国在哪里都讲速度,燥热、肮脏、惹是生非的速度”,鼓舞着我们在困难中前进,持续地学习Storm。
我们在看颁奖仪式时学到的一件事情,就是一定要感谢一路走来帮助我们的每一个人。
Sean Allen感谢Chas Emerick,如果不是因为和他激烈的争论,我可能根本不会下决心来写一本书,如果没有他的付出,可能就不会有人有机会读到这本书了。Stephanie,感谢他在我每次都想放弃的时候鼓励我坚持下去。Kathy Sierra,感谢他在Twitter上和我沟通,让我能梳理清晰写作的思路。感谢Matt Chesler和Doug Grove,他们帮助纠正了第7章的写作方向。感谢在TheLadders向我咨询问题的伙伴,是他们帮助我完成了第8章。感谢Tom Santero,帮我审阅了我在分布式系统上的一些细节。感谢Matt,帮我做了大量写书期间必须要做但我又不想做的事情。
Matthew Jankowski首先感谢我的妻子Megan,她是我永恒的动力来源,无论写书会占用多少时间,她都表现出无限的耐心,给予我坚定的支持。可以说没有她,我是无法完成本书的。还有我的女儿Rylan,感谢她出生在写作的这段时间里,她给了我很大的启迪,也许她到现在还根本没意识到吧。感谢我的家人、朋友和同事,感谢他们的无限支持和建议。感谢Sean和Peter在刚开始听到这个想法后,就愿意一起参与到本书的创作,这的确是一段漫长的经历,感谢有他们一起一路走来。
关 于 本 书?About this book大数据的概念日趋流行,能用于处理实时流数据的工具显得尤其重要,Apache Storm就是这样一个能处理无限流数据的工具。
本书不仅供新手入门,也不只针对高阶学习。尽管理解大数据技术以及分布式系统可以帮助阅读,但我们并不希望这是作为阅读本书的前提条件。我们尽可能尝试迎合新人或是熟悉该领域的读者,本书最初的目的就在于呈现如何在生产环境中应用Storm的“最佳实践”,但为了更深刻地了解Storm的应用,一些基础知识还是有必要预习的,所以我们希望本书的内容可以面向不同经验层次的工程师。
如果你是刚开始学习Storm的新人,那么我们建议先阅读第1~4章,并且确保要全面理解,因为这几章包含了后面所需要的全部基础概念知识。如果你是有Storm应用经验的读者,那希望后面的章节会对你们更有帮助。总之,设计开发基于Storm Storm应用实践:实时事务处理之策略 下载 mobi epub pdf txt 电子书 格式
Storm应用实践:实时事务处理之策略 下载 mobi pdf epub txt 电子书 格式 2024
Storm应用实践:实时事务处理之策略 下载 mobi epub pdf 电子书买回来 还没来得及看,先来评价
评分正品666
评分内容不做评价,包装太简陋了,书没有任何包装直接就放快递袋子里了,收到书封面很脏,还有破损,和旧书没什么区别
评分此用户未填写评价内容
评分花了两天的时间读了下这本书,说说我的感受。首先这本书原版英文版的确是本好书,这本中文译本前半部分翻译的到也还算可以,后面翻译的估计是太依赖翻译软件了,截图的第一张图是我阅读过程中画出来与原文出入较大的语句,第二、三图是原英文。不想说别的了,国内翻译外文是有不错的书,不过大部分译者的初衷不是说为人们奉上一部精品,而普遍考虑的是银子。
评分还可以,入门看看
评分买回来 还没来得及看,先来评价
评分Storm入门书籍适合初学者阅读
评分看书,尤其是专业书,一定要看大师的,要看经典的,要看专著。
Storm应用实践:实时事务处理之策略 mobi epub pdf txt 电子书 格式下载 2024