分享

storm的worker如何负载均衡?

ld512870 发表于 2017-5-25 21:50:07 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 7092
    生产环境中使用的storm。经常遇到一个问题,比如某台机器上的worker挂了。然后它就会随便找一台机器重新启动worker。这样保证了任务不会挂掉。但是同样会导致一个问题。就是会导致一台机器上有多个worker。导致机器压力过大,而另外的压力很轻。这种情况怎么解决呢?我通常是rebalance一下。就会又重新分配。有其他方法吗?storm如果跑在yarn上呢?yarn本身是用来进行资源管理的。是否会解决这个问题?求大神解惑。

已有(1)人评论

跳转到指定楼层
einhep 发表于 2017-5-25 22:19:08
对于分配的任何,楼主可以取一个平均值。尽量不要让某一个机器达到极限。这样提高效率。
比如一台机器最多跑10worker,在资源充足的情况,可以分配5或则6个即可。
可以通过TOPOLOGY-WORKERS、parallelism-hint等调整

更多信息

具体有多少个worker,多少个executor,每个executor负责多少个task,是由配置和指定的parallelism-hint共同决定的
1、TOPOLOGY-WORKERS参数指定了某个topology运行时需启动的worker数目.
2、parallelism-hint指定某个component(组件,如spout)的初始executor的数目.
3、TOPOLOGY-TASKS是component的tasks数,计算稍微复杂点:
(1). 如果未指定TOPOLOGY-TASKS,此值等于初始executors数.
(2). 如果已指定,和TOPOLOGY-MAX-TASK-PARALLELISM值进行比较,取小的那个作为实际的TOPOLOGY-TASKS.

任务分配是通过mk-assignments函数来完成.



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条