Storm的故障容忍性

本文讲解了Storm故障容忍性(Fault-Tolerance)的设计细节:当Worker、节点、Nimbus或者Supervisor出现故障时是如何实现故障容忍性,以及Nimbus是否存在单点故障问题。

这篇博客的内容是关于Storm官网上的Fault-Tolerance文章的翻译。一直在关注Storm相关的技术,发现官网上这篇文章虽然字数很少,但却描述了Storm故障容忍性的主要设计细节(除了保证数据处理这一块,已经在Guaranteeing
message processing
文章中中详细讲解,所以文中只是给了一个link)。

当一个Worker挂了会怎样?

当一个Worker挂了,Supervisor会重启它。如果这个Worker连续在启动时失败,并且无法让Nimbus观察到它的心跳,Nimbus将这个Worker重新分配到另一台机器上。

当一个节点挂了会怎样?

分配给这台机器的任务将会超时,并且Nimbus将这些任务重新分配给其它机器。

当Nimbus或者Supervisor daemon进程挂了会怎样?

Nimbus和Supervisor daemon进程设计成快速失败(无论何时当遇到任何异常情况,将会执行自毁)和无状态(所有的状态都保存在Zookeeper或者磁盘上)。正如Setting up a Storm cluster中描述的,Nimbus和Supervior daemon进程必须在监控下运行,如使用daemontools或者monit工具。所以如果Nimbus或者Supervisor
daemon进程挂了,它可以像什么异常也没有发生似的重新启动。

非常重要的是,没有任何Worker进程会因Nimbus或者Supervisor的挂掉而受到影响。这个和Hadoop相反。在Hadoop中如果JobTracker挂了,所有运行的Job将会丢失。

Nimbus是否有单点故障?

当你丢失了Nimbus节点,Worker将依然可以继续工作。此外,Supervisor将可以继续重启挂掉的Worker。然而,没有了Nimbus节点,Worker不能在需要的时候被重新分配到其它的机器。(例如你丢失了一台Woker机器)。

所以答案是Nimbus是会有单点故障的问题。在实践中,这个不是大问题。Nimbus deamon进程挂掉不会引起任何灾难发生。在将来,计划将Nimbus设计成高可用。

Storm如何保证数据处理?

Storm提供了一些机制来保证即使在节点挂了或者消息被丢失的情况下也能正确的进行数据处理。可以参考 Guaranteeing message processing

时间: 2024-10-06 23:51:29

Storm的故障容忍性的相关文章

Fault Tolerance —— Storm的故障容错性

 本文讲解了Storm故障容忍性(Fault-Tolerance)的设计细节:当Worker.节点.Nimbus或者Supervisor出现故障时是如何实现故障容忍性,以及Nimbus是否存在单点故障问题. 当一个Worker挂了会怎样? When a worker dies, the supervisor will restart it. If it continuously fails on startup and is unable to heartbeat to Nimbus, Nimb

Storm系统高可用性HA

关于Storm的高可用,有以下几个方面: (1)数据利用阶段可以通过ACK机制保证数据被处理: (2)在进程级别,worker失效,supervisor会自动重启worker线程; (3)在组件级别,supervisor节点失效,会在其他节点重启该supervisor任务: 但是一个很大的问题,nimbus节点失效怎么办? 目前storm是不支持nimbus高可用的.关于nimbus的重要性,在拓扑任务开始阶段,负责将任务提交到集群,后期负责拓扑任务的管理,比如任务查看,终止等操作.在通常情况下

MongoDB复制集成员及架构介绍(一)

MongoDB复制集介绍 MongoDB支持在多个机器中通过异步复制达到提供了冗余,增加了数据的可用性.MongoDB有两种类型的复制,第一种是同于MySQL的主从复制模式(MongoDB已不再推荐此方案):第二种是复制集,提供了自动故障转移的主从复制集群,其中复制集没有固定的主节点,当一个主机的故障后从节点会重新“选举”出一个新的主节点,从而提高的系统的可用性. 复制集(Replica Sets)成员 MongoDB的复制集是由一组mongod实例所组成的,并提供了数据冗余与高可用性.复制集中

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实

IT十八掌 徐培成 大数据 课堂笔记 storm第二天

storm ------------stream计算.实时性. master/slavenimbus //mastersupervisor //work node //zk spout //龙头,源源不断产生数据 nextTuple() bolt //接头. tuple //List<> storm.yaml-------------- zkserver: local.dir= slot.ports //槽位 - 6700 //worker process - 6701executor //执

Storm概念、应用详解(一)BaseStorm

Storm是基于数据流的实时处理系统,提供了大吞吐量的实时计算能力.通过数据入口获取每条到来的数据,在一条数据到达系统的时候,立即会在内存中进行相应的计算:Storm适合要求实时性较高的数据分析场景. Hadoop.Storm系统和组件接口对比表: Storm框架: · Nodes (服务器):指配置在一个 Storm 集群中的服务器,会执行 topology 的一部分 运算.一个 Storm 集群可以包括一个或者多个工作 node . · Workers (JVM 虚拟机):指一个 node

分布式系统

Distributed systems: for fun and profit (http://book.mixu.net/distsys/index.html) 链接:https://www.zhihu.com/question/23645117/answer/124708083 这篇文章主要试图回答以下两个个问题:1. 近些年分布式系统领域都在做些什么.2. 为什么现在投入分布式系统的学习和研究是值得的.我会尽可能多的去介绍更 "实用" 的分布式系统知识. 什么是实用?例如:Pax

100篇大数据文章[转]

摘要:PayPal高级工程总监Anil Madan写了篇大数据的文章,一共有100篇大数据的论文,涵盖大数据技术栈,全部读懂你将会是大数据的顶级高手. 开源(Open Source)用之于大数据技术,其作用有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用.另一方面,开源也给大数据技术构建了一个异常复杂的生态系统.每一天,都有一大堆"新"框架."新"类库或"新"工具,犹如雨后春笋般涌

读完这100篇论文,你也是大数据高手!

引言 PayPal高级工程总监Anil Madan写了这篇大数据的文章,一共有100篇大数据的论文,涵盖大数据技术栈,全部读懂你将会是大数据的顶级高手.当然主要是了解大数据技术的整个框架,对于我们学习大数据有莫大好处. 开 源(Open Source)用之于大数据技术,其作用有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的 推动作用.另一方面,开源也给大数据技术构建了一个异常复杂的生态系统.每一天,都有一大堆“新”框架.“新”类库或“新”