澳门新葡亰官网Storm介绍(二)

澳门新葡亰官网Storm介绍(二)

作者:Jack47

转载请保留作者及原文出处

迎关注我的微信公众账号程序员杰克,两限的文章会联手,也得上加我的RSS订阅源。

本文是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)的调度由一个Master节点来承担。这令机器上运行的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的瓶颈

  3. 把ZooKeeper的囤积放到自己的磁盘上

  4. 运SSD会显著升级性能
  5. 正规情况下,Zookeeper的历次写操作都见面并到磁盘,这便招了少于不善磁盘寻址操作(一不善是数量,一糟糕是数量的日记)。当所有的worker都发心跳给ZooKeeper时,可能会见明白影响性(来源)。

    • 消澳门新葡亰官网监控ZooKeeper节点的I/O负载
  6. 推介在生育环境及运行的ZooKooper集群有最少3个节点,这样就是出一个ZooKeeper服务器挂掉了(例如进行保护),也是可的。

Storm安全性

原始设计Storm时,完全无拿安全性考虑在内
兹安全性能相关的功用于一步步加进去
Storm 0.9.x本及之安康问题:

  1. 没有证实机制(authentication),没有授权机制(authorization)
  2. 传输的多寡(例如worker之间)没有加密
  3. ZooKeeper上囤积的数据没有看限制
  4. 如Nimbus的Thrift端口没有锁住,任意的用户代码都好以节点上实施

再多Storm安全性方面的建议见这里

题外话:
当触发Storm之后,有个问题在自己的脑海里升腾,国内的不胜店,比如Baidu,Ali,腾讯,都是来出生Storm这类似实时计算框架的土壤的,可是为什么从来不举行出来啊?

Apache Storm Basic
Training
Fault
tolerance

Storm in pictures

Storm 0.9 Basic
Training


假若你看了本篇博客,觉得对君抱有获,请点击右侧下角的“推荐”,让更多人见状!

资助Jack47写作,打赏一个鸡蛋灌饼钱吧

澳门新葡亰官网 2

微信打赏

澳门新葡亰官网 3

支付宝打赏

admin

网站地图xml地图