大数据经典论文解读
徐文浩
bothub 创始人
13844 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
大数据经典论文解读
15
15
1.0x
00:00/00:00
登录|注册

26 | 从S4到Storm(二):位运算是个好东西

你好,我是徐文浩。
上节课里,我们看到了随着时代的变迁,人们已经不满足于通过 MapReduce 这样批处理的方式进行数据分析了。于是,Yahoo 推出了 S4,不过 S4 并没有在历史舞台上站稳脚跟。在 S4 的论文发表的同一年,我们今天的主角,也就是 Storm 走上了历史舞台。在接下来的几年里,Storm 一度成为业界进行实时数据处理的标准解决方案。
令人惊叹的是,Storm 并不是来自哪一个业界的大公司。而是来自一个只有 3 个人的创业公司 BackType,它的主要作者南森·马茨(Nathan Marz)那个时候也才仅仅 21 岁。而没过多久之后,BackType 就被当时如日中天的 Twitter 收购了。可以说,Storm 证明了即使是到了今天,天才工程师仍然能够凭借一己之力,对整个行业产生重要的影响。
不过,作为一个开源项目,Storm 一开始并没有以论文的形式发表。直到 2014 年,Twitter 才发表了《Storm @Twitter》这样一篇更加偏重于 Storm 如何在 Twitter 内部使用的论文。而且,这篇论文中的作者中,也没有 Storm 最初的作者南森·马茨。虽然论文里没有南森的名字,但是 Storm 最大的功劳也仍然来自于他这个最初的作者。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Storm是一个开源的实时数据处理系统,采用Master+Worker的分布式系统架构,将消息和对应消息的处理逻辑进行了分离。其抽象模型是一个有向无环图,包括Spouts(数据源)、Tuple(元组)、Streams(数据流)和Bolts(计算逻辑处理)。与S4的PE不同,Storm的Bolt更像是MapReduce里的Map或Reduce函数,可以设置不同Bolt的并行度和数据流的分组方式。Storm提供了多种分组方式,如随机分组、字段分组、全局分组等,使得数据处理更加灵活和高效。Storm的设计避免了大量PE对象导致的内存占用和GC开销问题,同时也避免了业务逻辑代码中混入控制分布式数据分发的逻辑的情况。整个Storm集群采用Nimbus+Supervisor+Worker三种类型的进程组成,通过Zookeeper实现任务分配的持久化和容错能力。 在容错机制方面,Storm通过ZeroMQ消息队列实现Worker之间的通信,利用AckerBolt和位运算中的异或(XOR)来追踪和保障消息的处理。AckerBolt通过异或运算追踪整个Tuple的生命周期,实现“至少一次”的消息处理保障,同时最大程度减少内存和网络开销。然而,这种机制只能保障消息至少被处理一次,无法避免消息被重复处理,因此并不适合所有应用场景。Storm的容错机制为流式数据处理系统带来了新的思路和解决方案。 总的来说,Storm的系统架构和容错机制与MapReduce等系统有相似之处,但在分布式并行度、数据的有向无环图和业务层面的容错方面有了新的突破。此外,文章还提到了Lambda架构和Kappa架构,展示了流式数据处理系统的不断进化和完善。Storm的容错机制为流式数据处理系统带来了新的思路和解决方案,为读者提供了对实时数据处理系统的深入了解和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 在路上
    徐老师好,我认为可以通过修改Topology来提高Bolt的并行度,新流入的数据根据新版的Topology分发数据。Bolt节点分成两种,一种是无状态的,一种是有状态的。比如ParseTweetBolt是无状态的,很容易扩展,WordCountBolt是有状态的,需要把状态迁移到新节点上,可以采用一致性hash扩容、翻倍扩容等方式,减少需要迁移的数据。
    2021-12-03
    2
    8
  • 核桃
    这样看来,了解storm了,那么flink也必须要看看
    2022-03-01
    2
  • Defu Li
    老师,位运算这里应该是有问题的,如果第三步发送出去的是三个tuple,且这三个tuple异或完正好是0(01 xor 10 xor 11 = 00),那么AckerBolt最后结果也会是0了
    2022-05-19
    1
    1
  • CRT
    流量徒增的情况下,通过hash算法将多出来的数据均匀分布到新的计算节点就好了。
    2022-01-05
    1
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部