jstorm 学习记录一

jstorm 2.2.1 


   支持nimbus配置的自动更新supervisor


如何保证资源的隔离

资源隔离是每个平台都需要考虑的,被划分为几种level
1.在集群间:
1.1单机情况下,直接在物理隔离的情况下部署集群。这种有最好的隔离效果,但缺点就是容易浪费资源
1.2 Jstorm-on-yarn, Jstorm-on-docker, 通过 yarn or docker-swam, 部署多个逻辑集群在物理集群上,在逻辑集群间实现了隔离。
2.集群内部
2.1 自定义编排,用户可以通过jstorm的自定义配置强制一些tasks运行在固定的机器上独享运行。
2.2 worker cgroup技术,在worker上设置cgroup,隔绝cpu和内存资源
   
   
另外,这两种cgroup的方式是业内普遍使用的,但并不如jstorm的效果好

1.在yarn中通常使用了一种绑定cpu的方式,一个worker绑定到一个cpu核心上。最大的问题就是在这种方式下,当这个worker忙碌时,无法自动扩展到2或3个核心来使用。这样通常导致task无法执行。当worker空闲时,cpu核心无法被共享。在正式运行环境中,我们发现这种情况导致集群中的cpu 的使用率非常低。只有很少的worker能充分的使用所绑定的cpu核心,大多数workers处于空闲的状态。
2.共享方式,所有的workers 申请一个权重,假设有3个worker。worker A 权重 100,在cpu上高优先运行。worker B 权重200,在cpu上高优先运行。worker C 权重100,处于正常状态。最终结果就是 worker A 近乎使用了cpu的1/3,worker B 近乎使用了cpu的2/3,worker C 只能使用很少的cpu。但整体上机器的负载非常重,不停的发出警报。
   
   cgroups 技术   control  groups
   
   控制组技术  libcgroup
   jstorm 使用了 一种 workers 通过他们的权重来申请cpu的这种共享+限制的方式,但在同时设置一个worker的cpu的阈值(默认4核)。这是共享方案的基础,限制每个worker的cpu使用不能超过4个核。这样能确保当一个worker繁忙的时候,能自动的扩展2到3个核心来使用。当空闲时,worker能释放cpu来让其他worker使用。更为关键的是这样能避免一个worker运行过于繁忙。而且不会因为一个worker的高负荷运转导致一台机器负载过高从而导致其他worker无法使用cpu的情况发生。
   
   
   
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值