首页 > 其他分享 >【Storm篇】--Storm 容错机制

【Storm篇】--Storm 容错机制

时间:2022-12-30 17:37:06浏览次数:35  
标签:发送 -- Worker worker 容错 Nimbus 任务 Storm



=========================================================

声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!

个人网站地址:​http://www.lhworldblog.com/

==========================================================



一、前述

Storm容错机制相比其他的大数据组件做的非常不错。

二、具体原因

结合Storm集群架构图:

【Storm篇】--Storm 容错机制_zookeeper

我们的程序提交流程如下:

【Storm篇】--Storm 容错机制_服务器_02

 


其中各个组件的作用如下:

Nimbus
资源调度
任务分配
接收jar包

Supervisor
接收nimbus分配的任务
启动、停止自己管理的worker进程(当前supervisor上worker数量由配置文件设定)

Worker
运行具体处理运算组件的进程(每个Worker对应执行一个Topology的子集
worker任务类型,即spout任务、bolt任务两种
启动executor
    (executor即worker JVM进程中的一个java线程,一般默认每个executor负责执行一个task任务

 

Storm 架构设计与Hadoop架构对比:

 

【Storm篇】--Storm 容错机制_目录树_03

当程序提交后,storm的本地配置的目录架构书如下:

【Storm篇】--Storm 容错机制_zookeeper_04

zookeeper目录树如下:

【Storm篇】--Storm 容错机制_目录树_05

因为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分别启动一个线程。
如下:

【Storm篇】--Storm 容错机制_目录树_06

 



标签:发送,--,Worker,worker,容错,Nimbus,任务,Storm
From: https://blog.51cto.com/u_11936913/5980849

相关文章

  • 关于AWS-EBS-volume信息的收集方法及性能对比
    笔者刚开始只是注意到了EC2下面的classEC2.Volume(id)- AresourcerepresentinganAmazonElasticComputeCloud(EC2)Volume:可参考:https://boto3.amazonaws.com......
  • 【Storm篇】--Storm分组策略
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • HDLBits--Verilog习题记录4
    4.Circuits---SequentialLogic---LatchesandFlip-Flops----Edgecaptureregister问题描述:Foreachbitina32-bitvector,capturewhentheinputsignalchanges......
  • 曾行贿多达18起,这家疫苗龙头究竟怎么了?
    文|熔财经作者|艾尼欧疫苗龙头北京科兴生物(通常称“科兴生物”)再度引发争议。近日,名为#科兴三针防感染率仅8%是真的吗#的话题,冲上新浪微博和抖音的热搜榜,获得了不少网友的关......
  • 【Storm篇】--Storm基础概念
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • 数组——多维数组、Arrays类讲解
    数组——多维数组、Arrays类讲解多维数组多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。二维数组inta[][]=newi......
  • 手写防抖
    手写一个防抖防抖和节流都是依托定时器来完成的lettimer=nullinput1.addEventLister('keyup',function(){if(timer){clearTimeout(timer)}timer=......
  • 【机器学习】--线性回归中L1正则和L2正则
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • java 中的char , utf16 utf8
    在设计Java时决定采用16位的Unicode字符集....(中间省略)...现在16位的Char类型已经不能满足描述所有Unicode字符的需要了。Java为了解决这个问题的方法是使用码点和代码单......
  • Hive篇---Hive与Hbase整合
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......