Storm介绍(二)

2019-11-14 作者:新黄金矿工   |   浏览(197)

作者:Jack47

转发请保留笔者和原版的书文出处

招待关切本人的Wechat公众账号程序猿杰克,两侧的随笔会一同,也得以增添作者的RSS订阅源。

Storm介绍(二)。Storm介绍(二)。本文是Storm类别之大器晚成,首要介绍Storm的框架结构划假造计,推荐读者在阅读Storm介绍(一)的底蕴之上,阅读那生机勃勃篇。本文只是小编的读书笔记,偏重于浅档期的顺序的架构介绍,假如想实在驾驭里面设计时候的权衡,还索要越来越多的去阅读Storm源码。

知道Storm的框架结构,有利于帮忙大家通晓大型布满式系统设计中要求减轻的难点,以至减轻难题的思路,辅助大家越来越好的开展Storm品质调优化。

架构

先上一张Storm的架构图,借使熟练GFS和Hadoop的架构,会意识这个系统的架构图都很相近。
图片 1

Storm架构图

各节点的功力

如果您熟练Hadoop的话,可以那样做一下类比:

Hadoop Storm
JobTracker Nimbus(只有一个)
TaskTracker Supervisor(有很多个)
MapReduce任务 Topology

可以见见Nimbus是调治器,WorkerTask的容器,Task是职务的实在实行者。

起始拓扑

为了在集群上运行三个拓扑,必要首先把代码打包成多个“胖jar包”--必须带有全体的依赖代码,除了Storm它自己,因为Storm集群会提供。然后在风度翩翩台设置了storm命令行的机械上经过storm jar命令来交付拓扑:

storm jar my-topology-version-with-dependency.jar com.corp.MyTopology arg1 arg2

这一个命令会连到Nimbus,上传jar包。接下来Nimbus会把拓扑的代码运送到多台差别的机器或许JVM上。只有当拓扑在机器上布署成功了还要在JVM中初叶化了之后,技能真的开端拍卖新闻。

Master结点(Master node)

在布满式系统中,调治服务极度首要,它的策动,会直接关系到系统的周转功用,错误恢复生机(fail over),故障检查实验(error detection)和档期的顺序扩充(scale)的力量。

集群上职分(task)的调解由三个MasterStorm介绍(二)。节点来顶住。这台机械上运转的Nimbus经过担任职务的调解。别的三个经过是Storm UI,能够分界面上查看集群和具备的拓扑的运营情状。

从节点(Slave node)

Storm集群上有五个从节点,他们从Nimbus上下载拓扑的代码,然后去真正实行。Slave上的Supervisor经过是用来监督和保管实际运营职业代码的历程。在Storm 0.9之后,又多了三个进度Logviewer,可以用Storm UI来查看Slave节点上的log文件。
在布署文件storm.yaml中,决定了生龙活虎台机器上运维多少个worker:

supervisor.slots.ports:
- 6700
- 6701
- 6702

ZooKeeper的作用

ZooKeeper在Storm上不是用来做新闻传输用的,而是用来提供和睦服务(coordination service),同一时候积累拓扑的情形和计算数据。

  • ZooKeeper也就是一块黑板,SupervisorNimbus和worker都在上头留下约定好的音信。比如Supervisor启动时,会在ZooKeeper上注册,Nimbus就足以发掘SupervisorSupervisor在ZooKeeper上留下心跳音信,Nimbus透过这个心跳新闻来对Supervisor進展健康检查评定,检验出坏节点
  • 是因为Storm组件(component)的状态新闻囤积在ZooKeeper上,所以Storm组件就足以无状态,能够kill -9来杀死
    • 举个例子:Supervisors/Nimbus的重启不影响正在运作中的拓扑,因为状态都在ZooKeeper上,从ZooKeeper上海重机厂新加载一下就好了
  • 用来做心跳
    • Worker通过ZooKeeper把孩子executor的事态以心跳的款式报告给Nimbus
    • Supervisor进程经过ZK把团结的情景也以心跳的格局报告给Nimbua
  • 存款和储蓄近日任务的谬误情形(拓扑停止时会删除)

Storm的容错(Fault Tolerance)机制

正如“搭建二个Storm集群”一文介绍的平等,必需用工具如daemontools或者monit来监督Nimbus和Supervisor的后台进度。那样如若Nimbus或者Supervisor经过挂掉,会被daemontools检验到,并进行重启。

NimbusSupervisor进度被设计成高速失利(fail fast)的(当碰着非常的意况,进度就能够挂掉)并且是无状态的(状态都封存在Zookeeper也许在磁盘上)。

最要紧的是,worker进度不会因为Nimbus或者Supervisor挂掉而受影响。那跟Hadoop是不等同的,当JobTracker挂掉,全部的职务都会没了。

  1. 当Nimbus挂掉会怎样?

    要是Nimbus是以引入的艺术处于进程软禁(例如通过supervisord)之下,那它会被重启,不会有其它影响

    否则当Nimbus挂掉后:

    • 已经存在的拓扑能够三回九转健康运维,不过无法交付新拓扑
    • 正在运行的worker进程还是能够延续专门的工作。何况当worker挂掉,supervisor会平昔重启worker。
    • 停业的天职不会被分配到别的机器(是Nimbus的职分)上了
  2. 当一个Supervisor(slave节点)挂掉会如何?

    假定Supervisor是以引入的艺术处于进度软禁(举个例子通过(supervisord)[supervisord.org/])之下,那它会被重启,不会有别的影响

    要不然当Supervisor挂掉: 分配到那台机器的享有职责(task)会晚点,Nimbus会把这个职务(task)重新分配给其余机器。

  3. 当三个worker挂掉会什么?

    当多个worker挂掉,supervisor会重启它。若是开发银行平素失利那么那时候worker也就不能够和Nimbus保持心跳了,Nimbus会重新分配worker到其余机器

  4. Nimbus算是四个单点故障吗?
    生龙活虎经Nimbus节点挂掉,worker进程依然能够三番两次做事。並且当worker挂掉,supervisor会一直重启worker。可是,没有了Nimbus,当要求的时候(假如worker机器挂掉了)worker就不能被重新分配到别的机器了。
    于是答案是,Nimbus在“某种程度”上归于单点故障的。在事实上中,这种情状没什么大不断的,因为当Nimbus进度挂掉,不会有惨烈的作业时有发生

硬件必要

ZooKeeper

  1. 推荐介绍精心设计过的机器,因为ZooKeeper是Storm的瓶颈
    • 种种机器使用二个ZK的实例
    • 瞩目因为相通台机器上的其余进度也许设想机他们是分享那台机械的,所以恐怕会影响ZK的性质(来源)
  2. I/O是ZooKeeper的瓶颈
  • 把ZooKeeper的积攒放到自个儿的磁盘上
  • 行使SSD会分明晋级性能
  • 例生势形下,Zookeeper的每一回写操作都会同盟到磁盘,那就诱致了四遍磁盘寻址操作(二回是数码,三次是数额的日志)。当全部的worker都发心跳给ZooKeeper时,只怕会分明影响属性(来源)。
    • 亟需监控ZooKeeper节点的I/O负载
  1. 引进在坐蓐景况上运转的ZooKooper集群有起码3个节点,这样就算有三个ZooKeeper服务器挂掉了(比方举办爱慕),也是足以的。

Storm安全性

固有设计Storm时,完全未有把安全性考虑在内
现行反革命平安质量相关的作用在一步步加进去
Storm 0.9.x版本上的平安主题素材:

  1. 不曾认证机制(authentication),未有授权机制(authorization)
  2. 传输的数额(举个例子worker之间)未有加密
  3. ZooKeeper上囤积的数据还未访谈限定
  4. 朝气蓬勃旦Nimbus的Thrift端口未有锁住,大肆的顾客代码都得以在节点上实施

愈来愈多Storm安全性方面包车型大巴提议见这里

题外话:
在接触Storm之后,有个难点在本人的脑际里升腾,本国的大厂家,比方Baidu,Ali,Tencent,都是有出生Storm那类实时计算框架的泥土的,然则怎么一贯不做出来吗?

Apache Storm Basic Training
Fault tolerance

Storm in pictures

Storm 0.9 Basic Training


大器晚成旦你看了本篇博客,感觉对你抱有收获,请点击右下角的“推荐”,让更五个人见状!

扶植Jack47写作,打赏贰个鸡蛋灌饼钱呢

图片 2

Wechat打赏

图片 3

支付宝打赏

本文由永利皇宫会员注册登录发布于新黄金矿工,转载请注明出处:Storm介绍(二)

关键词:

  • 上一篇:没有了
  • 下一篇:没有了