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的数据可靠性(理论)的更多相关文章

  1. Kafka数据可靠性深度解读

    原文链接:http://www.infoq.com/cn/articles/depth-interpretation-of-kafka-data-reliability Kafka起初是由Linked ...

  2. 【Kafka】Kafka数据可靠性深度解读

    转帖:http://www.infoq.com/cn/articles/depth-interpretation-of-kafka-data-reliability Kafka起初是由LinkedIn ...

  3. kafka数据可靠性深度解读【转】

    1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...

  4. Kafka数据可靠性与一致性解析

    Partition Recovery机制 每个Partition会在磁盘记录一个RecoveryPoint, 记录已经flush到磁盘的最大offset.broker fail 重启时,会进行load ...

  5. 论SparkStreaming的数据可靠性和一致性

    转自: http://www.csdn.net/article/2015-06-21/2825011 摘要:眼下大数据领域最热门的词汇之一便是流计算了,而其中最耀眼的无疑是来自Spark社区的Spar ...

  6. kafka如何保证数据可靠性和数据一致性

    数据可靠性 Kafka 作为一个商业级消息中间件,消息可靠性的重要性可想而知.本文从 Producter 往 Broker 发送消息.Topic 分区副本以及 Leader 选举几个角度介绍数据的可靠 ...

  7. 数据准备<1>:数据质量检查-理论篇

    数据行业有一句很经典的话--"垃圾进,垃圾出"(Garbage in, Garbage out, GIGO),意思就是,如果使用的基础数据有问题,那基于这些数据得到的任何产出都是没 ...

  8. Storm大数据实时计算

    大数据也是构建各类系统的时候一种全新的思维,以及架构理念,比如Storm,Hive,Spark,ZooKeeper,HBase,Elasticsearch,等等 storm,在做热数据这块,如果要做复 ...

  9. TCP/IP 协议是如何保证数据可靠性的?

    原文: 网络基础:TCP协议-如何保证传输可靠性 TCP协议传输的特点主要就是面向字节流.传输可靠.面向连接.这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的. 确保传输可靠性的方式TCP ...

随机推荐

  1. JAVA NIO 真正做到处理一个事件

    如下图所示: 组1:如果只有上面的红框,不能真正处理该事件,下次执行select()方法,仍然可以select出来该事件.出现死循环现象.如果只有下面的红框,下次select()结果为0,如果外层循环 ...

  2. iOS开发之性能优化

    1.避免过于庞大的XIB 当加载XIB的时候把所有的东西都放在了内存里,包括任何的图片:如果有一个不会即刻用到的view,就会浪费宝贵的内存资源了. 当加载一个引用了图片或者声音资源的nib时,nib ...

  3. C#4 for循环 迭代法 穷举法应用

    for()循环. 四要素: 初始条件,循环条件,状态改变,循环体. 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加 ...

  4. c++线程创建传递的参数发生改变

    看看如下代码,觉得输出会是什么? #include "stdafx.h" #include <windows.h> #include <iostream> ...

  5. 使用PowerShell管理Windows8应用

    引子(?): 我从消费者预览版开始使用的win8,大概是因为我年龄不大的缘故,我很快熟悉了这个操作系统并习惯了使用windows8的Modern App.我之前使用过一个叫Windows8 Moder ...

  6. IE9下Ajax缓存问题

    使用jQuery的getJSON从后台定时获取数据并刷新界面,使用以下方法时,在Chrome,Firefox下没问题,但在IE9下却无法刷新数据 $.getJSON(webApp + "/G ...

  7. Android 监听网络变化

    Android 监听网络变化

  8. 关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

    原文:关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 关于Microsoft.CSharp.RuntimeBinder.Runtim ...

  9. Pods 更新后提示Bundle资源找不到

    http://www.oschina.net/question/101347_2159145

  10. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...