Apache Storm中的Scheduler和Strategy之间有什么不同

问题描述 投票:1回答:1

我正在研究Apache Storm。我阅读了源代码&&开发人员文档&& JavaDoc &&其他有关Storm的有用博客。

一个问题困扰了我很多。大多数文档和博客都表示,当Storm Cluster为Workers分配拓扑时,不同的调度程序会导致不同的分配方式。但我感到困惑的是,当Storm分配拓扑时,Strategies在“org.apache.storm.scheduler.resource.strategies.XXX”包中执行的角色是什么,例如DefaultResourceAwareStrategy和其他两种策略?

在Storm示例程序中,我记得在方法setTopologyStrategy()中应用的这些策略在创建拓扑时选择策略。那么,在ResourceAwareSchedule等Scheduler和任务赋值中的DefaultResourceAwareStrategy之类的策略之间有什么不同呢?哪一个是决定任务分配的真正因素?

我在谷歌搜索这个问题,但它没有一个非常明确的答案。我希望我能尽可能明确地回复解释调度程序和策略的区别。非常感谢。

resources scheduler apache-storm topology
1个回答
1
投票

如你所知,Storm有一些不同的调度程序。其中一些不考虑管理程序节点的资源。 ResourceAwareScheduler是一种调度程序实现,可在决定分配拓扑的位置时考虑主管资源/负载。

为了使ResourceAwareScheduler具有灵活性,它使用策略来确定如何对不同的主管进行排名。 ResourceAwareScheduler包含资源感知所需的公共代码,而策略执行实际调度。如果有意义,ResourceAwareScheduler使用策略进行调度。

查看https://github.com/apache/storm/blob/master/storm-server/src/main/java/org/apache/storm/scheduler/resource/strategies/scheduling/DefaultResourceAwareStrategy.java#L108和Generic ResourceAware Strategy中的相应行。那里的评论解释了不同策略的作用。

© www.soinside.com 2019 - 2024. All rights reserved.