storm对topology的分配调度

2017-03-13  本文已影响471人  一品悟技术_张驰

根据官网介绍,storm内置了4种调度器

分别是: DefaultScheduler, IsolationScheduler, MultitenantScheduler, ResourceAwareScheduler.

下面分别进行介绍,

DefaultScheduler是storm默认调度器,默认时,topology内的组件将随机分配至已有资源上。

IsolationScheduler

IsolationScheduler为资源隔离调度器,这个调度器是为了使得topology对服务器节点进行独占。使得不同的topology发布时,占用不同的服务器资源,彼此形成物理隔离。

使用如下:

编辑nimbus所在服务器下的storm.yaml,添加如下配置:

表明,我发布名字为zc1的topology时,此拓扑将独占两台服务器,zc2的topology将独占一台服务器。

之前我一共配备了3台服务器作为从节点。发布后效果如下:

由图可见,虽然我的服务资源里还有worker资源,但是由于zc1,zc2已经独占了3台服务器,所以我的otherTopology无法分配到计算资源。

MultitenantScheduler

官网并没有对此调度器进行说明,只是留下了这个类在github上的位置,我们通过阅读此类的源码,也可以分析出此类的调度规则。

根据代码可知,这种调度模式会为每个topology发布者构造一个自己专属的隔离资源池,之后会通过遍历topology集,通过为资源池分配topology关联来分配节点。

验证:

由图可见,root分配第三个topology时,已经无法分配。(注:storm这个功能不太稳定,不建议使用)

上一篇下一篇

猜你喜欢

热点阅读