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.@Override2.public void fail(Object id){3.}

返回一个msgID,这样就知道哪一个tuple fail了,重发哪个tuple

Bolt容错

  • emit时,锚定输入Tuple
  • ack输入tuple

Trident API

  • 为用户屏蔽掉一些状态与计算一致的细节
  • 使用户更方便书写可容错的作业
时间: 2024-10-08 18:44:26

Storm的数据可靠性(理论)的相关文章

kafka数据可靠性深度解读

Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spark等都支持与Kafka集成. 1 概述 Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于向外扩展: 它同时为发布和订阅提供高吞吐量: 它支持多订阅者,当失败时能自动平衡消费者: 它将消息持久化到磁盘,因此可用于批量消费,例如ETL以及实

Storm中的可靠性

我们知道Storm有一个很重要的特性,那就是Storm API能够保证它的一个Tuple能够被完全处理,这一点尤为重要,其实storm中的可靠性是由spout和bolt组件共同完成的,下面就从spout和bolt两个方便给大家介绍一下storm中的可靠性,最后会给出一个实现了可靠性的例子. 1.Spout的可靠性保证 在Storm中,消息处理可靠性从Spout开始的.storm为了保证数据能正确的被处理, 对于spout产生的每一个tuple,storm都能够进行跟踪,这里面涉及到了ack/fa

面向数据可靠性存储系统设计思想探讨

存储系统的设计门槛是比较高的,和计算系统存在的最大区别在于存储系统所承载的是数据,一旦系统出现故障,不仅业务的连续性得不到保障,更为重要的是用户数据将会造成丢失.计算节点发生故障,最多造成业务连续性中断,这是与存储系统相比在可靠性要求方面最大的区别. 十几年前刚刚接触存储系统的研发,当时没有觉得存储有多复杂,不就是把数据按照一定规则存放在磁盘中,并且实现一定的功能,例如数据保护RAID.数据复制Replication.数据快照Snapshot以及文件系统嘛.感觉存储系统中最复杂的是各种功能,设计

SSD数据可靠性问题分析

前几个月对近两年Facebook和Google发表的两篇SSD故障分析的文章进行了阅读,并进行了整理.Google的在今年的FAST会议上发表了<Flash Reliability in Production: The Expected and the Unexpected>,在这篇文章中通过收集长达六年的数据对SSD可靠性进行了研究,并且对比了SSD与HDD之间的可靠性差别.Facebook在2015年发表了<A Large-Scale Study of Flash Memory Fa

5.oracle的dump理解五 数据块理论

5.oracle的dump理解五 数据块理论 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51228514 前两篇描述了我们在操作层面看到的一些东西,但是没有理论指导,看到越多我们只会越迷糊.所以,蛤蟆从官方文档上摘取一些老少皆宜的内容来补脑. 块是数据块IO的最小单位. 1     数据块和操作系统块 从物理层面,数据库的块存储时候是由操作系统块组成.操作系统块是操作系统可以读写的最小数据单位.ORACLE块是一个逻辑存

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

转自: http://www.csdn.net/article/2015-06-21/2825011 摘要:眼下大数据领域最热门的词汇之一便是流计算了,而其中最耀眼的无疑是来自Spark社区的SparkStreaming项目. 对于流计算而言,最核心的特点毫无疑问就是它对低时的需求,但这也带来了相关的数据可靠性问题. 2Driver HA 由于流计算系统是长期运行.且不断有数据流入,因此其Spark守护进程(Driver)的可靠性至关重要,它决定了Streaming程序能否一直正确地运行下去.

Storm大数据实时计算

大数据也是构建各类系统的时候一种全新的思维,以及架构理念,比如Storm,Hive,Spark,ZooKeeper,HBase,Elasticsearch,等等 storm,在做热数据这块,如果要做复杂的热数据的统计和分析,亿流量,高并发的场景下,最合适的技术就是storm,没有其他 举例说明: Storm:实时缓存热点数据统计->缓存预热->缓存热点数据自动降级 Hive:Hadoop生态栈里面,做数据仓库的一个系统,高并发访问下,海量请求日志的批量统计分析,日报周报月报,接口调用情况,业务

金融高频数据计量——理论与实证

http://blog.charmpeach.com/investment/%e9%87%91%e8%9e%8d%e9%ab%98%e9%a2%91%e6%95%b0%e6%8d%ae%e8%ae%a1%e9%87%8f-%e7%90%86%e8%ae%ba%e4%b8%8e%e5%ae%9e%e8%af%81%ef%bc%88%e4%b8%80%ef%bc%89/1069/ 本系列以 Hautsch, N. (2011). Econometrics of financial high-freq

硬RAID可以为NVMe SSD数据可靠性保驾护航吗?

随着NAND Flash价格的不断下降,NVMe SSD正在慢慢普及.NVMe SSD由于极高的性能常被用作数据缓存,即使NVMe SSD发生故障,数据还在持久化介质中存储,不会导致数据丢失等严重事件.随着NVMe SSD的大量使用,其逐渐被用作持久化存储介质,替代传统磁盘.一旦NVMe SSD被用作持久化介质,便提出了数据保护的需求.传统磁盘采用RAID或者多副本的方式实现数据保护,那么在NVMe SSD上如何进行数据保护?是否还可以采用传统的硬RAID卡为NVMe SSD提供数据保护服务?