storm容错机制(翻译官网文档)

  • 为什么要用storm?

storm 是一个免费的开源的分布式实时计算系统。storm使得处理无边的数据流变得简单,就像hadoop做批处理那样执行实时处理。storm简单,可以被用在各种编程语言,并且用起来充满了乐趣!

storm有很多使用场景:实时分析,在线机器学习,持续计算,分布式RPC(remote procedure call protocol远程过程调用),ETL(extract-transform-load数据从来源经过抽取,转换,加载到目的端的过程,数据仓库技术),等等。storm很快:一个benchmark 每个节点每秒一百万数据。storm可兼容,容错,保证所有数据都将被处理,并且搭建和操作简单。

storm可以和你正在使用的队列和数据库技术整合。一个storm topology以任意复杂方式处理和计算数据流,如果有需要可以在阶段之间将数据流进行再划分。

  • fault tolerant

storm是可容错的:当workers死掉时,storm会自动重启他们,如果一个节点死掉,该节点上的worker会在另一个节点重启。

storm daemons守护进程,nimbus和supervisor都是无状态的并且fail-fast故障快速恢复的。如果他们死掉,他们会立刻重启,就当什么都没有发生过,这意味着你可以杀掉storm的守护进程而不影响到整你集群的健康或者你的拓扑。

几问:

当一个worker死掉怎么办?

当一个线程挂掉了,supervisor会重启它,如果它重启的时候一直挂,并且不能发送heartbeat给nimbus,nimbus会重新分配worker到其他机器上去。

当一个节点死掉怎么办?

分配到该节点上的任务会超时,并且nimbus会重新分配这些任务到其他机器上去。

当nimbus或者supervisor守护进程死掉怎么办?

nimbus和supervisor守护进程是故障快速修复的,(遇到任何意外情况,进程自建process self-destructs)并且无状态(所有状态都保存在zookeeper或者disk硬盘上)nimbus和supervisor必须在守护进程工具或者监视器的监视下运行。因此如果nimbus或者supervisor守护进程挂掉了,他们会重启就当什么都没发生过。

最值得注意的是,没有worker进程会受到nimbus和supervisor挂掉的影响,这和hadoop相反,hadoop中jobtracker挂掉的话,所有运行的job都没了。

nimbus是一个单点故障single point of failure吗?

 如果你丢失了nimbus节点,worker任然会继续工作,除此之外,workers挂掉supervisor会继续重启workers。然而,没有nimbus,workers在必要情况下不会被重新分配到其他机器上去(比如你的worker machine丢失了)。

storm如何保证数据处理?

storm提供机制保证即使节点挂掉或者消息丢失的情况下的数据处理。

猜你喜欢

转载自blog.csdn.net/zonahaha/article/details/81078353