具体描述
汇集作者在大众点评和1号店实时平台的大数据实践
讲解基于Storm的流数据处理的整体解决方案
《Storm技术内幕与大数据实践》内容主要围绕实时大数据系统的各个方面展开,从实时平台总体介绍到集群源码、运维监控、实时系统扩展、以用户画像为主的数据平台,最后到推荐、广告、搜索等具体的大数据应用。书中提到的不少问题是实际生产环境中因为数据量增长而遇到的一些真实问题,对即将或正在运用实时系统处理大数据问题的团队会有所帮助。
作者简介
陈敏敏 1号店个性精准化部门资深架构师,在此之前曾服务于微软和三星电子等公司,长期从事大数据、搜索和推荐平台相关工作。目前主要关注于NoSQL、实时计算框架、推荐、广告投放等相关技术。
王新春 大众点评网数据平台资深工程师,负责点评实时计算平台相关工作,推动流式计算和实时计算在点评的应用和推广,一直致力于大数据和分布式系统的研究和应用。目前主要从事NoSQL、实时分布式系统的研究与开发。
黄奉线 1号店基础架构部分布式存储团队负责人,推动流式计算在1号店的应用,获得CTO特别奖,长期从事基础架构相关工作。目前主要关注于NoSQL、开源、流式计算、分布式存储等相关技术。
目录信息
1.1 Storm的基本组件 2
1.1.1 集群组成 2
1.1.2 核心概念 3
1.1.3 Storm的可靠性 5
1.1.4 Storm的特性 6
1.2 其他流式处理框架 6
1.2.1 Apache S4 6
1.2.2 Spark Streaming 6
1.2.3 流计算和Storm的应用 7
第2章 实时平台介绍 11
2.1 实时平台架构介绍 11
2.2 Kafka架构 13
2.2.1 Kafka的基本术语和概念 13
2.2.2 Kafka在实时平台中的应用 14
2.2.3 消息的持久化和顺序读写 15
2.2.4 sendfile系统调用和零复制 15
2.2.5 Kafka的客户端 17
2.2.6 Kafka的扩展 17
2.3 大众点评实时平台 17
2.3.1 相关数据 18
2.3.2 实时平台简介 18
2.3.3 Blackhole 19
2.4 1号店实时平台 20
第3章 Storm集群部署和配置 23
3.1 Storm的依赖组件 23
3.2 Storm的部署环境 24
3.3 部署Storm服务 24
3.3.1 部署ZooKeeper 24
3.3.2 部署Storm 25
3.3.3 配置Storm 25
3.4 启动Storm 28
3.5 Storm的守护进程 28
3.6 部署Storm的其他节点 30
3.7 提交Topology 30
第4章 Storm内部剖析 33
4.1 Storm客户端 33
4.2 Nimbus 36
4.2.1 启动Nimbus服务 36
4.2.2 Nimbus服务的执行过程 38
4.2.3 分配Executor 44
4.2.4 调度器 46
4.2.5 默认调度器DefaultScheduler 47
4.2.6 均衡调度器EvenScheduler 50
4.3 Supervisor 53
4.3.1 ISupervisor接口 54
4.3.2 Supervisor的共享数据 54
4.3.3 Supervisor的执行过程 56
4.4 Worker 61
4.4.1 Worker中的数据流 61
4.4.2 创建Worker的过程 62
4.5 Executor 65
4.5.1 Executor的创建 66
4.5.2 创建Spout的Executor 69
4.5.3 创建Bolt的Executor 74
4.6 Task 76
4.6.1 Task的上下文对象 77
4.6.2 Task的创建 82
4.7 Storm中的统计 84
4.7.1 stats框架 85
4.7.2 metric框架 90
4.8 Ack框架 91
4.8.1 Ack的原理 92
4.8.2 Acker Bolt 94
4.9 Storm总体架构 95
第5章 Storm运维和监控 97
5.1 主机信息监控 97
5.1 日志和监控 98
5.2 Storm UI和NimbusClient 99
5.3 Storm Metric的使用 100
5.4 Storm ZooKeeper的目录 102
5.5 Storm Hook的使用 104
第6章 Storm的扩展 107
6.1 Storm UI的扩展 107
6.1.1 Storm UI原生功能 108
6.1.2 Storm UI新功能需求 108
6.1.3 Storm的Thrift接口 109
6.2 资源隔离 110
6.2.1 CGroup测试 111
6.2.2 基于CGroup的资源隔离的实现 119
第7章 Storm开发 121
7.1 简单示例 121
7.2 调试和日志 122
7.3 Storm Trident 124
7.4 Strom DRPC 128
第8章 基于Storm的实时数据平台 129
8.1 Hadoop到Storm的代码迁移经验 129
8.2 实时用户画像 130
8.2.1 简单实时画像 130
8.2.2 实时画像优化 131
8.2.3 实时画像的毫秒级更新 133
8.3 其他场景画像 135
8.4 画像的兴趣度模型构建 136
8.5 外部画像融合经验分享 138
8.6 交互式查询和分析用户画像 142
8.7 实时产品和店铺信息更新 143
第9章 大数据应用案例 145
9.1 实时DAU计算 145
9.2 实时个性化推荐 150
9.2.1 推荐系统介绍 150
9.2.2 实时推荐系统的方法 153
9.2.3 基于Storm的实时推荐系统 156
9.3 广告投放的精准化 158
9.3.1 点击率预测 158
9.3.2 搜索引擎营销 161
9.3.3 精准化营销与千人千面 161
9.4 实时意图和搜索 164
9.4.1 用户意图预测 165
9.4.2 搜索比价 167
9.4.3 搜索排序 168
第10章 Storm使用经验和性能优化 171
10.1 使用经验 171
10.1.1 使用rebalance命令动态调整并发度 171
10.1.2 使用tick消息做定时器 172
10.1.3 使用组件的并行度代替线程池 174
10.1.4 不要用DRPC批量处理大数据 174
10.1.5 不要在Spout中处理耗时的操作 174
10.1.6 log4j的使用技巧 175
10.1.7 注意fieldsGrouping的数据均衡性 176
10.1.8 优先使用localOrShuffleGrouping 176
10.1.9 设置合理的MaxSpoutPending值 177
10.1.10 设置合理的Worker数 177
10.1.11 平衡吞吐量和时效性 178
10.2 性能优化 179
10.2.1 找到Topology的性能瓶颈 179
10.2.2 GC参数优化 181
10.3 性能优化原则 181
附录A Kafka原理 183
附录B 将Storm源码导入Eclipse 191
· · · · · · (收起)
读后感
用户评价
这本书的阅读体验充满了惊喜,仿佛打开了一扇通往未来计算方式的窗户。我一直好奇那些处理海量实时数据的幕后英雄究竟是如何工作的,而这本书的阐述,彻底解开了我的困惑。它在对基础概念进行扎实讲解的同时,巧妙地穿插了大量的“为什么”——为什么选择这种数据结构?为什么采用这种分布式策略?这种追根溯源的叙事方式,极大地满足了我作为一个好奇心强烈的技术探索者的求知欲。书中引用的图表和示意图,设计简洁却信息量巨大,完美地辅助了对抽象概念的理解。更重要的是,它提供了一种全新的思维范式,让我开始用更动态、更流式的方式去审视和设计我的数据处理流程。这种思维上的转变,其价值甚至超过了具体的代码实现。
作为一名项目经理,我更关注的是技术如何落地并带来实际的商业价值。这本书在这方面给出了极为有力的支撑。它不仅仅是技术手册,更像是一本高效能大数据项目落地方案集。书中详述了如何根据不同的业务场景选择合适的技术栈,以及如何构建一个高可用、可扩展的数据处理流水线。那些关于资源调度和成本效益分析的章节,直接解决了我们在团队决策时常遇到的难题。我尤其欣赏它对运维和监控体系搭建的详尽介绍,毕竟一个跑起来的系统,如何保持它的健康,比最初的搭建要困难得多。作者并没有避开现实中的挑战,而是坦诚地分享了踩过的“坑”,并提供了成熟的规避策略。读完后,我感觉自己不再是那个对底层技术心存敬畏的管理者,而是可以自信地与技术团队进行深度对话,共同推动项目向前发展的决策者。
这份阅读体验堪称一次酣畅淋漓的学术冒险。作者在技术深度上的挖掘令人敬佩,绝非市面上那些肤浅的“入门指南”可比。它真正做到了“内幕”二字,剖析了许多框架内部的优化策略和设计哲学,这对于希望成为资深工程师的人来说,是无价之宝。书中对并发控制和容错机制的讨论尤其精彩,那种对系统稳定性和性能极限的追求,体现了作者深厚的技术功底。我经常需要停下来,反复琢磨那些关于数据一致性和延迟的权衡取舍,这迫使我跳出“能用就行”的思维定式,开始思考“如何才能更好”。这本书的结构布局也极为考究,逻辑层层递进,如同精密的手术刀般,精准地切开了复杂技术的肌理。我甚至发现一些业界广为流传的“最佳实践”在这个框架下有了更优化的解法,这无疑拓宽了我的技术视野,让我对未来技术发展有了更清晰的预判。
老实说,在拿起这本书之前,我对大数据的认知还停留在比较零散的层面,各种框架和概念混杂不清。这本书就像一位经验丰富的向导,带领我系统性地梳理了整个技术版图。它的章节组织非常贴合学习者的认知曲线,从宏观概览到微观细节,过渡得非常平滑自然。让我印象深刻的是,作者在讲解复杂算法时,总是能找到最直观的比喻,使得那些原本可能让人望而生畏的数学模型变得触手可及。而且,这本书的“实践”部分做得极为扎实,它不仅提供了代码,还详细说明了编译、部署和调试过程中的常见问题及解决方案,这对于自学或者资源有限的团队来说,简直是雪中送炭。阅读它更像是在进行一场结构化的训练,每读完一部分,都感觉自己的技术栈得到了一次有机的升级,对构建健壮的现代数据平台充满了信心。
这本书简直是为我这种技术小白量身定做的,虽然我对“Storm”这个名字感到既熟悉又陌生,但读完后,那种豁然开朗的感觉无与伦比。作者的文笔流畅自然,没有那种晦涩难懂的行话,即便是初次接触大数据领域的读者,也能轻松跟上节奏。书中对概念的阐述深入浅出,比如将复杂的流处理模型比喻成一条条流动的河流,让我瞬间理解了实时计算的核心思想。尤其欣赏的是,它并没有仅仅停留在理论层面,而是通过大量实际案例,手把手地教会我们如何将理论付诸实践。那些代码片段的注释清晰明了,每一步操作都有详尽的解释,让人感觉就像身边有一位经验丰富的前辈在悉心指导。我特别喜欢其中关于数据清洗和预处理的那一章,那些技巧简直是实战中的“黑魔法”,解决了我在以往项目中遇到的诸多痛点。这本书不仅让我补齐了知识短板,更重要的是,它激发了我对深入研究大数据技术的兴趣,让我看到了一个全新的技术世界。
这本书到底是以storm技术内幕为主还是以大数据实践为主呢?Storm讲的不怎么样,大数据也不怎么样。本来就很薄的一本书,随便翻下发现图片占了不少的内容。
略逊色于看的另一半Storm的书,完整的例子没有,有点零散。不过Storm的书真的不多,开卷有益系列。
实践丰富,讲解细致,受益匪浅。
内容少,且编排不合理
内容少,且编排不合理