Storm的数据可靠性(理论)
Storm的数据可靠性(理论)
.note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",SimSun,Song,sans-serif;}
.note-content h2 {line-height: 1.6; color: #0AA89E;}
.note-content {background: #FFFFFF;}
.note-content h1 {color: #7AB3A7;}
.note-content h3 {color: #147A67;}
Storm的数据可靠性(理论)
我们都知道,分布式计算系统一般都管理着许多的机器。我们假设,现在有1000台机器的集群,假设每天每台机器出故障的几率只有1/1000,也就是说三年出一次故障,那么我们来算算每天至少有一台机器出故障的概率是多少?
也就是说,即使平均每台机器三年才出一次故障,这么对于1000台机器的集群,每天也会有一半以上的概率机器会挂掉。
所以说,分布式计算里面经常需要考虑任何的机器(Worker)挂掉,数据依然能够正常处理
故障处理
○ Nimbus故障,换台机器重启即可
○ Supervisor挂掉,迁移其上Worker即可
○ Worker挂掉,迁移走数据能正确处理吗?也就是说,如果Storm把所有数据发到Worker上面计算,它又是如何保证这些数据正确的恢复?如何保证这些数据不被重复计算?
Storm是使用一种叫做源端重放的方法来保证其可靠性的。
也就是说,Worker在运行其间有些什么原因导致数据丢失或者处理超时,这个时候Storm会通过一种叫Acker的机制来计算出这个错误是由源端的哪个tuple产生的,然后通知产生tuple的那个spout”这个tuple处理失败了,重发一下”,这个时候就会重发一个tuple使得下游能处理完
Spout数据保障
- 不丢:Acker机制保证数据如果未成个处理,可以及时发现,并通知Spout重发
- 不重:使用msgID去重
Spout容错
- NextTuple中,emit时,指定msgID
1._collector.emit(new Values(sentence),1111);//1111为msgID
- 如果哪个tuple处理超时了,那么fail就会被调用
1.@Override
2.public void fail(Object id){
3.}
返回一个msgID,这样就知道哪一个tuple fail了,重发哪个tuple
Bolt容错
- emit时,锚定输入Tuple
- ack输入tuple
Trident API
- 为用户屏蔽掉一些状态与计算一致的细节
- 使用户更方便书写可容错的作业
Storm的数据可靠性(理论)的更多相关文章
- Kafka数据可靠性深度解读
原文链接:http://www.infoq.com/cn/articles/depth-interpretation-of-kafka-data-reliability Kafka起初是由Linked ...
- 【Kafka】Kafka数据可靠性深度解读
转帖:http://www.infoq.com/cn/articles/depth-interpretation-of-kafka-data-reliability Kafka起初是由LinkedIn ...
- kafka数据可靠性深度解读【转】
1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- Kafka数据可靠性与一致性解析
Partition Recovery机制 每个Partition会在磁盘记录一个RecoveryPoint, 记录已经flush到磁盘的最大offset.broker fail 重启时,会进行load ...
- 论SparkStreaming的数据可靠性和一致性
转自: http://www.csdn.net/article/2015-06-21/2825011 摘要:眼下大数据领域最热门的词汇之一便是流计算了,而其中最耀眼的无疑是来自Spark社区的Spar ...
- kafka如何保证数据可靠性和数据一致性
数据可靠性 Kafka 作为一个商业级消息中间件,消息可靠性的重要性可想而知.本文从 Producter 往 Broker 发送消息.Topic 分区副本以及 Leader 选举几个角度介绍数据的可靠 ...
- 数据准备<1>:数据质量检查-理论篇
数据行业有一句很经典的话--"垃圾进,垃圾出"(Garbage in, Garbage out, GIGO),意思就是,如果使用的基础数据有问题,那基于这些数据得到的任何产出都是没 ...
- Storm大数据实时计算
大数据也是构建各类系统的时候一种全新的思维,以及架构理念,比如Storm,Hive,Spark,ZooKeeper,HBase,Elasticsearch,等等 storm,在做热数据这块,如果要做复 ...
- TCP/IP 协议是如何保证数据可靠性的?
原文: 网络基础:TCP协议-如何保证传输可靠性 TCP协议传输的特点主要就是面向字节流.传输可靠.面向连接.这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的. 确保传输可靠性的方式TCP ...
随机推荐
- 有用的BitConverter
肯定有用的到的转换,记录下来. ///double =>ieee754 double d = 0.12345; byte[] IEEE754 = BitConverter.GetBytes(d) ...
- 初学.NET小技巧(不断更新)
1.快速打出Console.WriteLine : 输入cw,然后按两下tab键. 2.创建一个函数快捷键:bool b = IsPrimeNumber(); 把光标放到函数名上,Shift+Al ...
- Linux下配置VNC
1.确认是否安装vnc服务端 : rpm -q tigervnc-server 默认是没有安装的,需要在Linux系统文件Packages文件夹找到vnc安装包(里面有两个分别是客户端与服务端)tig ...
- 关于ECharts Java类库的一个jquery插件
在项目中开发图表功能时用到了Echars和一个关于Echars的java类库(http://git.oschina.net/free/ECharts).这个类库主要目的是方便在Java中构造EChar ...
- 关于python命令在editor里编写与在interpreter里的编写的不同之处
关于python命令在editor里编写与在interpreter里的编写的不同之处 其实用这个标题,我心里还是有点胆怯的.作为一个python入门的小白,不,编程入门的小白,我还不太确定我对edit ...
- 14-利用SVD简化数据
参考:http://blog.csdn.net/geekmanong/article/details/50494936 http://www.2cto.com/kf/201503/383087.htm ...
- 初学swift笔记变量的定义(一)
swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...
- Java getResourceAsStream返回为空的问题
使用 getResourceAsStream("helloworld.propterties") 读取文件的stream,返回一直为空,试这把.properties文件放在 很多路 ...
- Hibernate实现分页
转自:http://blog.csdn.net/huqiub/article/details/4329541 分页在任何系统中都是非常头疼的事情,有的数据库在语法上支持分页,而有的数据库则需要使用可滚 ...
- hdu 2769 uva 12169 Disgruntled Judge 拓展欧几里德
//数据是有多水 连 10^10的枚举都能过 关于拓展欧几里德:大概就是x1=y2,y1=x2-[a/b]y2,按这个规律递归到gcd(a,0)的形式,此时公因数为a,方程也变为a*x+0*y=gcd ...