Storm的容错性
一、简介
如果在消息处理过程中出了一些异常,Storm 会重新安排这个出问题的 topology。Storm 保证一个 topology 永远运行(除非你显式杀掉这个 topology) 。
当然,如果 topology 中存储了中间状态,那么当 topology 重新被 Storm 启动的时候,需要应用自己处理中间状态的恢复
二、集群的各级容错
1. 任务级失败
- bolt 任务失败。此时,acker 中所有与此 bolt 任务关联的消息都会因为超时而失败,对应 spout 的 fail 方法将被调用。
- acker 任务失败。如果 acker 任务本身失败了,它在失败之前持有的所有消息都将会因为超时而失败。Spout 的 fail 方法将被调用。
- Spout 任务失败。这种情况下,Spout 任务对接的外部设备(如MQ)负责消息的完整性。例如当客户端异常的情况下,kestrel队列会将处于 pending 状态的所有的消息重新放回到队列中。其他的 spout 数据源,可能需要我们自行维护这个消息的完整性
2. 任务槽(slot)故障
- worker 失败。每个 worker 中包含数个 bolt(或 spout)任务 。supervisor 负责监控这些任务,当 worker 失败后,supervisor会尝试在本机重启它。
- supervisor 失败。supervisor 是无状态的,因此 supervisor 的失败不会影响当前正在运行的任务,只要及时的将它重新启动即可。supervisor 不是自举的,需要外部监控来及时重启。
- nimbus 失败。nimbus 是无状态的,因此 nimbus 的失败不会影响当前正在运行的任务(nimbus 失败时,无法提交新的任务) ,只要及时的将它重新启动即可。nimbus 不是自举的 , 需要外部监控来及时重启
3. 集群节点(机器)故障
- storm 集群中的节点故障。此时 nimbus 会将此机器上所有正在运行的任务转移到其他可用的机器上运行。
- zookeeper 集群中的节点故障。 zookeeper 保证少于半数的机器宕机仍可正常运行,及时修复故障机器即可
Storm的容错性的更多相关文章
- storm学习笔记(一)
1.storm介绍 storm是一种用于事件流处理的分布式计算框架,它是有BackType公司开发的一个项目,于2014年9月加入了Apahche孵化器计划并成为其旗下的顶级项目之一. ...
- Storm元数据交互详解
一.Nimbus Nimbus既需要在Zookeeper中创建元数据,也需要从Zookeeper中获取元数据. 如上图箭头1所示: 1.对于路径a,Nimbus只会创建路径,不会设置数据,数据是稍后由 ...
- SparkStreaming和storm的区别
这是2种不同的架构. 他们的区别是SparkStreaming的吞吐量非常高,秒级准实时处理,Storm是容错性非常高,毫秒级实时处理 解释:sparkStreaming是一次处理某个间隔的数据,比如 ...
- Fault Tolerance —— Storm的故障容错性
——本文讲解了Storm故障容忍性(Fault-Tolerance)的设计细节:当Worker.节点.Nimbus或者Supervisor出现故障时是如何实现故障容忍性,以及Nimbus是否存在单点 ...
- Storm介绍及与Spark Streaming对比
Storm介绍 Storm是由Twitter开源的分布式.高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求.Storm常用于在实时分析.在线机器学 ...
- 理解storm的ACKER机制原理
一.简介: storm中有一个很重要的特性: 保证发出的每个tuple都会被完整处理.一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所产生的所有的子tuple都被成 ...
- 《storm实战-构建大数据实时计算读书笔记》
自己的思考: 1.接收任务到任务的分发和协调 nimbus.supervisor.zookeeper 2.高容错性 各个组件都是无状态的,状态 ...
- storm学习
一 storm 相关术语 . Nimbus storm 集群主节点,负责资源分配和任务调度.(相当于namenode) . supervisor storm集群工作节点,接受Nimbu分配任务,管理w ...
- 【大数据】Summingbird(Storm + Hadoop)的demo运行
一.前言 为了运行summingbird demo,笔者走了很多的弯路,并且在国内基本上是查阅不到任何的资料,耗时很久才搞定了demo的运行.真的是一把辛酸泪,有兴趣想要研究summingbird的园 ...
随机推荐
- 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(2)
[编者按]本篇文章作者是 Reinder de Vries,既是一名企业家,也是优秀的程序员,发表多篇应用程序的博客.本篇文章中,作者主要介绍了如何基于 Parse 特点,打造一款类似 Instagr ...
- POJ 2135
Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10840 Accepted: 4011 Descri ...
- 【linux】文字提取
提取IP地址: 方法①: ifconfig eth3|grep Bcast|cut -d ":" -f2|cut -d " " -f1 ifconfig: 显示 ...
- LINGO使用教程(一)
LINGO是用来求解线性和非线性优化问题的简易工具.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果. 1.LINGO快速入门 当你在 ...
- 概述Log4j简介
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j. Log4j是Apache的一个开放源代码项目,通过使用Log4j ...
- Codeforces Round #336 (Div. 2) B. Hamming Distance Sum 计算答案贡献+前缀和
B. Hamming Distance Sum Genos needs your help. He was asked to solve the following programming pro ...
- C# Socket 入门2(转)
现在来传一个图片看看, 改改程序, 看看服务端 图片为 140K, 1.jgp 1. 服务端 1 using System; 2 using System.Collections.Generic; ...
- Linux下面如何安装Django
首先你需要肯定你的机子上装了Python 现在ubuntu已经自带,所以不必操心 当然你可以在你的机子下测试一下,只需在 terminal 下输入 python 如果出现下面的界面就说明你机子已经装了 ...
- 在编辑框(CEdit)控件上追加内容
版权声明:本文为博主原创文章,未经博主允许不得转载. // MFC 版本 CEdit* pEdit = GetDlgItem(IDC_EDIT1); ASSERT(pEdit && p ...
- ArcGIS Runtime SDK for Android 10.2.5新开发平台安装配置指南
ArcGIS Runtime SDK for Android 10.2.5版本在年前发布,其中一个重大的变化是:新版本使用了新的开发环境,在10.2.5版本中Esri使用了官方提供的新的Android ...