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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Storm中的Scheduler和Strategy之间有什么不同相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

如你所知,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中的相应行。那里的评论解释了不同策略的作用。

以上是关于Apache Storm中的Scheduler和Strategy之间有什么不同的主要内容,如果未能解决你的问题,请参考以下文章

Storm2

Storm测试

JStorm与Storm源码分析--Scheduler,调度器

当我使用storm scheduler时,一个主机可以调度两次吗?

Storm调度

请让我知道Apache Camel中的民意调查工作机制(CRON JOB)