Slot容量不足情况下提交Topo会发生什么
来源:互联网 发布:课程顾问 知乎 编辑:程序博客网 时间:2024/04/25 23:02
Storm集群的资源是有限的,如果达到资源使用的临界点,会发生什么?
之前参考了不少资料,但都没有解释这个问题,这段时间不少朋友都问道这个问题,下面通过例证说明该现象。首先将之前一些资料做一些罗列:
资料1:
任务分配时 有两种情况:
(a)task数目比worker多,例如task是[1 2 3 4],可用的slot只有[host1:port1 host2:port1],那么最终是这样分配
{1: [host1:port1] 2 : [host2:port1]3 : [host1:port1] 4 : [host2:port1]}
可以看到任务平均地分配在两个worker上。
(b)如果task数目比worker少,例如task是[1 2],而worker有[host1:port1 host1:port2 host2:port1 host2:port2],那么首先会将woker排序, 将不同host间隔排列,保证task不会全部分配到同一个机器 上,也就是将worker排列成
[host1:port1 host2:port1 host1:port2 host2:port2]
然后分配任务为
{1: host1:port1 , 2 : host2:port1}
资料2:
在Pluggable Scheduler之前,Twitter Storm里面对于用户提交的每个Topology进行任务分配是由nimbus来做的,nimbus的任务分配算法可是非常牛逼的哦,主要特点如下
- 在slot充沛的情况下,能够保证所有topology的task被均匀的分配到整个机器的所有机器上
- 在slot不足的情况下,它会把topology的所有的task分配到仅有的slot上去,这时候其实不是理想状态,所以。。
- 在nimbus发现有多余slot的时候,它会重新分配topology的task分配到空余的slot上去以达到理想状态。
- 在没有slot的时候,它什么也不做
接下来,开始例证内容:
1. 集群情况
- 1 supervisor
- 4个slot
- 1GB mem/slot
2. 提交任务
顺序提交两个主要任务(等第1个任务开始正常运行后提交第2个):
提交截图如下:
可以看到:
第1个任务ex也正常运行,使用3个worker,即3个slot。
第2个任务wc正常运行,默认1个worker,即1个slot。
这是wc正常运行的截图:
3. 提交第3个任务
该任务也是wordcount,但topo名字不同。
提交后截图如下:
4. Topo运行状态
1)ex运行正常
第1个运行,占用3个slot,运行正常,默认也是3个slot。
(2)wc运行正常
第2个运行,占用1个slot,但默认是启动3个slot。由于ex拓扑占用3个slot,总量是4,所以整个storm集群剩余slot是1个,wc只能有1个slot。 slot=worker,worker中可以运行多个executor,这里占用28个exeutors也就是28个线程,原则上,worker可以启动无限多个executor(资源足够的情况下)。所以,使用1个worker/slot处理这个拓扑是没问题的。
so,这也就是说明了,如果资源不足,新Topo申请资源时,会压缩配置,使用尽量理想的情况运行拓扑。
(3)wc2没有运行
第3个拓扑,因为集群没有任何资源slot,而同一个slot只能同时运行一个拓扑的任务,所以它只能等待,但是不会消亡,也不会提交不成功或者运行中失败。
- Slot容量不足情况下提交Topo会发生什么
- 什么情况下发生单块读?
- 241 map 在什么情况下会发生死锁;stl 中的 map 是怎么实现的?
- 什么情况下会失眠
- 什么情况下发生索引块分裂
- Java FileInputStream没有读取文件会发生什么情况
- java新手,什么情况下发生编译错误,什么情况下发生运行错误!
- 虚函数什么情况下会内联
- 什么情况下会返回NodeList对象
- 虚函数什么情况下会内联
- 什么情况下会导致内存泄露
- session什么情况下会改变
- 什么情况下会导致内存泄露
- 什么情况下会导致内存泄露
- 什么情况下会导致内存泄露
- android什么情况下会导致ANR?
- 类什么情况下会执行初始化
- 什么情况下会用到try-catch
- 一般导入的包有问题
- Vue搭配mint-ui
- 使用caffe训练好的模型测试单张手写数字
- 单片机==LCD1602之简易万年历
- shader数学基础之顶点法向量从物体坐标系变换到世界坐标系
- Slot容量不足情况下提交Topo会发生什么
- 关于flux
- js中记住密码功能
- Unity 预览窗口
- 递归树形结构
- Ubuntu环境下OpenCV 3.2版本中CMake error the source directory does not exist
- 点到线段距离(加样例 “玲珑杯”郑州轻工业学院第九届ACM程序设计大赛暨河南高校邀请赛-正式赛)
- Ionic 自动生成启动图标
- 【学习】 区间消除类dp