标签:
我们都知道,分布式计算系统一般都管理着许多的机器。我们假设,现在有1000台机器的集群,假设每天每台机器出故障的几率只有1/1000,也就是说三年出一次故障,那么我们来算算每天至少有一台机器出故障的概率是多少?
○ Nimbus故障,换台机器重启即可
○ Supervisor挂掉,迁移其上Worker即可
○ Worker挂掉,迁移走数据能正确处理吗?也就是说,如果Storm把所有数据发到Worker上面计算,它又是如何保证这些数据正确的恢复?如何保证这些数据不被重复计算?
Storm是使用一种叫做源端重放的方法来保证其可靠性的。
也就是说,Worker在运行其间有些什么原因导致数据丢失或者处理超时,这个时候Storm会通过一种叫Acker的机制来计算出这个错误是由源端的哪个tuple产生的,然后通知产生tuple的那个spout”这个tuple处理失败了,重发一下”,这个时候就会重发一个tuple使得下游能处理完
Spout数据保障
Spout容错
1._collector.emit(new Values(sentence),1111);//1111为msgID
1.@Override
2.public void fail(Object id){
3.}
返回一个msgID,这样就知道哪一个tuple fail了,重发哪个tuple
Bolt容错
Trident API
标签:
原文地址:http://www.cnblogs.com/XBlack/p/5041497.html