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. C# 整个网页保存成图片

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. JS判断终端浏览器类型

    根据终端浏览器类型不懂加载不同的JS或CSS文件 <script> var browser = { versions: function () { var u = navigator.us ...

  3. 内存泄漏工具VLD1.0_要点分析

    0X01 关闭FPO优化 // Frame pointer omission (FPO) optimization should be turned off for this // entire fi ...

  4. 自定义TabHost,TabWidget样式

    先看效果: 京东商城底部菜单栏 新浪微博底部菜单栏 本次学习效果图:

  5. Transfer learning across two sentiment classes using deep learning

    用深度学习的跨情感分类的迁移学习 情感分析主要用于预测人们在自然语言中表达的思想和情感. 摘要部分:two types of sentiment:sentiment polarity and poli ...

  6. Android HandlerThread的用法

    HandlerThread 继承自Thread,内部封装了Looper. 首先Handler和HandlerThread的主要区别是:Handler与Activity在同一个线程中,HandlerTh ...

  7. java代码收藏:获取HttpServletRequest中某一前缀的参数

    public static Map getParametersStartingWith(ServletRequest request, String prefix) { Enumeration par ...

  8. C语言入门(18)——数组与字符串

    用来存放字符量的数组称为字符数组.字符串可以看作一个数组,它的元素是字符型的. 字符数组的定义 形式与前面介绍的数值数组相同.例如: char c[10]; 由于字符型和整型通用,也可以定义为int ...

  9. Android各层推荐开发书籍及参考资料

    Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...

  10. POJ 3662 Telephone Lines(二分答案+SPFA)

    [题目链接] http://poj.org/problem?id=3662 [题目大意] 给出点,给出两点之间连线的长度,有k次免费连线, 要求从起点连到终点,所用的费用为免费连线外的最长的长度. 求 ...