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 ...
随机推荐
- vsts
首先要搞清楚啥是VSTS,这对于我们安装配置有基础作用.看看这张组织结构图就一目了然了.Visual Studio Team Suite就是我们常说的VS.NET 2005开发环境,安装包3G左右的 ...
- Erp第三章:管理问题与MRP、MRP2、ERP
1企业管理者经常头疼问题:一.“产供销”严重脱节 . 二.财务数据和业务数据对不上号 2.MRP(物料需求计划,Material Requiremengts Planning),MRP2( ...
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...
- UVA 1613 K-Graph Oddity
题意; 在一个n个点的无向连通图中,n是奇数,k是使得所有点的度数不超过k的最小奇数,询问一种染色方案,使得相邻点的颜色不同. 分析: k=所有点中最大的入度.如果最大入度是偶数,则k+1.每个点可选 ...
- Android面试必备
好吧,说实话是自己面试被问到的和自己整理的别人的一些问题,很多问题的回答可能根据水平不同层次和深度不同,如果经常忘的话可能是还没明白原理,学习就是对对抗遗忘,现在开始复习吧: 每个面试的问题都极大的贴 ...
- 连接mysql数据库2+操作入门
package 对数据库操作Statment; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...
- C#修改 Excel指定单元格的值
/// <summary> /// 将指定字符串写入指定单元格中 /// </summary> /// <param name="data">要 ...
- python基础之 sys.argv[]用法
sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始. arg[1]表示第一个命令行参数 arg[1][2:] 表示取第一个命令行参数,但是去掉前两 ...
- [Linked List]Delete Node in a Linked List
otal Accepted: 48115 Total Submissions: 109291 Difficulty: Easy Write a function to delete a node (e ...
- VC++客户端 缩小包的尺寸
图片压缩: 1. 背景图片尺寸一般为100-300KB,使用纯色图片可缩小至1-3KB,方法得当可缩小1M多: 2. .ico一般为100-200KB,16x16一直到256x256,可减去其中几种尺 ...