26 | 从S4到Storm(二):位运算是个好东西
- 深入了解
- 翻译
- 解释
- 总结
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-0328
- 核桃这样看来,了解storm了,那么flink也必须要看看2022-03-012
- Defu Li老师,位运算这里应该是有问题的,如果第三步发送出去的是三个tuple,且这三个tuple异或完正好是0(01 xor 10 xor 11 = 00),那么AckerBolt最后结果也会是0了2022-05-1911
- CRT流量徒增的情况下,通过hash算法将多出来的数据均匀分布到新的计算节点就好了。2022-01-051