大数据干货系列(七)--Storm总结

Storm总结

 

本质

Storm 是一个开源分布式实时计算系统它可以实时可靠地处理流数据

 

、Storm解决了什么问题

1.实时数据分析需求

– 实时报表动态展现

– 数据流量波动状态

– 反馈系统

2.时效性

– 秒级处理完成数据

3.增量式处理

– 数据来一条处理一条

 

、Hadoop vs Storm

1.Storm任务没有结束,Hadoop任务执行完结束

2.Storm延时更低得益于网络直传内存计算省去了批处理的收集数据的时间

3.Hadoop使用磁盘作为中间交换的介质storm的数据是一直在内存中流转的

4.Storm的吞吐能力不及Hadoop,所以不适合批处理计算模型

 

、Storm的基本概念

为了理解Storm的一些基本概念我们可以拿Hadoop1.0来做对比就像直梯和扶梯都是运送乘客但他们有各自对应的结构运行方式等所以会采用不同的命名加以区分知道了它们对应内在的层级关系有助于理解Storm中的新概念

但这些概念该怎么系统地翻译呢因为网上也找不到合理的中文翻译我就尝试着自己解释一波脑洞有点大各位可以参考一下当然也欢迎探讨以下


Nimbus(翻译了一下有神像的光轮的意思)

类似Hadoop1.0里的JobTracker进程负责管理资源在集群里面分发代码分配计算任务给Supervisor,并且监控状态

Supervisor(有导师的意思引申出主教牧师)
    类似Hadoop1.0里的TaskTracker进程启动和停止属于自己管理的worker进程每一个工作进程执行一个Topology的一个子集一个Topology由运行在很多机器上的很多worker工作进程组成

• NimbusSupervisor之间的所有协调工作都是通过Zookeeper集群完成

• Nimbus进程和Supervisor进程都是快速失败(fail-fast),即可以用kill -9来杀死NimbusSupervisor进程然后再重启它们就好像什么都没有发生过联想到耶稣的复活)。这个设计使得Storm异常的稳定

• Nimbus进程和Supervisor进程都是无状态的所有状态要么在Zookeeper要么在磁盘上

Worker(那我们不妨理解为信徒)

运行具体处理Topology(传教的整个活动下图的灰色部分的进程一个Topology可能会在一个或者多个Worker里面执行每个Worker执行整个且仅此一个Topology的一部分一个信徒不会信仰传播两种宗教)。

Task(教徒的行为)

每个Spout/Bolt(统称为Component)会以多个任务(Task)的形式在集群上运行每个任务对应一个执行线程可以在调用 TopologyBuildersetSpoutsetBolt函数时设置每个SpoutBolt的并发数

Spout(有滔滔不绝的意思)

就像牧师带领进行祷告布道一样表示不断有信息(Tuple,图中黄色的方块spout传出来

Bolt(筛选脱口说出)

就像信徒聆听牧师的布道同时也会像其他人传播这些福音,Component之间分组的方式称为Stream Grouping,如下

最后我们再来理解抽象的StreamTopology:

Stream()

 Storm 中的核心抽象一个流由无限的元组(Tuple)序列组成这些元组会被分布式并行地创建和处理

Topology(拓扑)

一个实时处理程序的逻辑一个拓扑跟一个MapReduce的任务(job)是类似的主要区别是 MapReduce 任务最终会结束而拓扑会一直运行直到你杀死它)。一个拓扑是一个通过流分组(Stream Grouping)SpoutBolt连接到一起的拓扑结构一个拓扑就是一个复杂的多阶段的流计算

 

、Storm的容错设计

1.架构容错

NimbusSupervisor进程被设计成快速失败(fail fast)(当遇到异常的情况进程就会挂掉)并且是无状态的(状态都保存在Zookeeper或者在磁盘上)。最重要的是,worker进程不会因为Nimbus或者Supervisor挂掉而受影响这跟Hadoop是不一样的JobTracker挂掉所有的任务都会没了

1)  Nimbus 挂掉会怎样

如果Nimbus是以推荐的方式处于进程监管(例如通过supervisord)之下那它会被重启不会有任何影响

如果不是以推荐的方式处于监管下那么已经存在的拓扑可以继续正常运行但是不能提交新拓扑正在运行的worker进程仍然可以继续工作而且当worker挂掉,supervisor会一直重启 worker。失败的任务不会被分配到其他机器(Nimbus的职责)上了

2) 当一个Supervisor挂掉会怎样

如果Supervisor是以推荐的方式处于进程监管(例如通过(supervisord)[supervisord.org/])之下那它会被重启不会有任何影响

如果不是以推荐的方式处于监管下分配到这台机器的所有任务(task)会超时,Nimbus 会把这

些任务(task)重新分配给其他机器

3) 当一个worker挂掉会怎么样

当一个worker挂掉,supervisor会重启它如果启动一直失败那么此时worker也就不能和 Nimbus保持心跳了,Nimbus会重新分配worker到其他机器

4) Nimbus 存在单点问题吗

如果Nimbus节点挂掉,worker进程仍然可以继续工作而且当worker挂掉,supervisor会一直重启 worker。但是没有了Nimbus,当需要的时候(如果worker机器挂掉了),worker就不能被重新分配到其他机器了

所以答案是,Nimbus 某种程度上属于单点故障的在实际中这种情况没什么大不了的因为当 Nimbus 进程挂掉不会有灾难性的事情发生

 

2.数据容错

    Storm中的每个Topology中都包含有一个Acker组件用于跟踪每一个spout发出的tuple一个tuple树完成时发送消息给tuple的创造者如果在用户设置的最大超时时间(timetout可以通过Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS来指定内这些Tuple没有被完全处理那么Acker会告诉Spout该消息处理失败相反则会告知Spout该消息处理成功,它会分别调用Spout中的ackfail方法 


以上.


如果觉得本文对你有帮助,可以点个赞表示支持呗!

如果有任何意见和建议,也欢迎再下方留言~





 

关注这个公众号,每天给你推送三道大数据面试题~


点击这里查看往期精彩内容:

每日三问(1222)

每日三问(1228)

数据挖掘干货总结(三)--分类算法


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值