【Storm篇】--Storm 容错机制
2018-01-26 23:55
197 查看
=========================================================
声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!
请关注本人博客园地址:http://www.cnblogs.com/LHWorldBlog/
个人网站地址:http://www.lhworldblog.com/
==========================================================
一、前述
Storm容错机制相比其他的大数据组件做的非常不错。
二、具体原因
结合Storm集群架构图:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125222234725-1293201864.png)
我们的程序提交流程如下:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125222606084-2066476042.png)
其中各个组件的作用如下:
Nimbus
资源调度
任务分配
接收jar包
Supervisor
接收nimbus分配的任务
启动、停止自己管理的worker进程(当前supervisor上worker数量由配置文件设定)
Worker
运行具体处理运算组件的进程(每个Worker对应执行一个Topology的子集)
worker任务类型,即spout任务、bolt任务两种
启动executor
(executor即worker JVM进程中的一个java线程,一般默认每个executor负责执行一个task任务)
Storm 架构设计与Hadoop架构对比:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125223155850-716737181.png)
当程序提交后,storm的本地配置的目录架构书如下:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125223302897-793996083.png)
zookeeper目录树如下:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125223335647-2111906731.png)
因为zookeeper存储了程序的运行信息,状态,并监控task的心跳状况。所以当程序提交完后,任务信息都存储在zookeeper里面,即使nimbus宕机,程序依然会继续执行。
三、容错机制
从以下三个方面考虑:
1、集群节点宕机(集群角度)
Nimbus服务器
单点故障时可以添加报警,但程序银镜加载到内存中运行了。
非Nimbus服务器
故障时,该节点上所有Task任务都会超时,Nimbus会将这些Task任务重新分配到其他服务器上运行
2、进程挂掉
Worker
挂掉时,Supervisor会重新启动这个进程。如果启动过程中仍然一直失败,并且无法向Nimbus发送心跳,Nimbus会将该Worker重新分配到其他服务器上
Supervisor
无状态(所有的状态信息都存放在Zookeeper中来管理)
快速失败(每当遇到任何异常情况,都会自动毁灭)
Nimbus
无状态(所有的状态信息都存放在Zookeeper中来管理)
快速失败(每当遇到任何异常情况,都会自动毁灭)
3、消息的完整性
通过Acker -- 消息完整性的实现机制
保证消息肯定能被处理一次,但不保证会不会重复。因为假设发出的是一个values被切割后其中一个被发送失败了,那么这一组values都得重新发送。
spout发送的时候同时带上message_id,这样这个tuple发送失败后,就能知道哪一个tuplele.
通过消息的亦或状态确保消息是否发送完整。
acker默认为每一个spout,bolt分别启动一个线程。
如下:
![](http://images2017.cnblogs.com/blog/1250469/201801/1250469-20180125224226615-1325580574.png)
相关文章推荐
- storm的容错机制
- Storm容错机制
- Storm消息容错机制(ack-fail机制)
- Storm容错机制/消息消息可靠性保证
- 【原】Storm 守护线程容错机制
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink--容错机制(ACK,RDD,基于log和状态快照),消息处理at least once,exactly once两个是关键
- Storm容错机制Acker详解和实战案例
- Storm入门与实践(4)Storm的容错机制
- 【Storm篇】--Storm并发机制
- Storm(四):容错机制
- ack是什么,如何使用Ack机制,如何关闭Ack机制,基本实现,STORM的消息容错机制,Ack机制
- Storm目录树、任务提交、消息容错、通信机制
- Dubbo-容错机制
- Java的容错机制——try—catch机制
- Storm的并行度、Grouping策略以及消息可靠处理机制简介
- Dubbo服务集群,常见容错机制:failover ,failsafe,failfase ,failback,forking
- storm教程(五):storm消息的可靠性保障与acker机制、Thrift client 集群监控
- RDD容错机制-checkpoint
- 图解Storm并发机制及其执行流程
- spark streaming容错机制