apachestorm中调度器和策略有什么不同

yfwxisqw  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(363)

我在学Apache风暴。我阅读了源代码、开发人员文档、javadoc以及其他有关storm的有用博客。
一个问题把我弄糊涂了。大多数文档和博客都说,当storm cluster将拓扑分配给Worker时,不同的调度器会导致不同的分配方式。但是我搞不清包“org.apache.storm.scheduler.resource.strategies.”中的策略(比如defaultresourceawarestrategy)和其他两个策略在storm分配拓扑时所扮演的角色是什么?
在storm示例程序中,我记得在方法settopologystrategy()中应用了这些策略,以便在创建拓扑时选择策略。那么,在任务分配中,像ResourceAwareReschedule这样的调度器和像DefaultResourceAwareRestrategy这样的策略有什么不同呢?哪一个是决定任务分配的真正因素?
我在google上搜索了这个问题,但没有一个非常清晰的答案。我希望我能得到一个尽可能清楚的答复来解释调度程序和策略的区别。谢谢。

dl5txlt9

dl5txlt91#

正如您所注意到的,storm有几个不同的调度程序。其中一些没有考虑到主管节点的资源。ResourceAwareRescheduler是一个调度器实现,在决定在何处分配拓扑时,它可以考虑管理器资源/负载。
为了使resourceawawrescheduler更灵活,它使用一种策略来确定如何对不同的主管进行排序。resourceAwareRescheduler包含资源感知所必需的公共代码,而这些策略执行实际的调度。如果有意义的话,resourceawarescheduler将使用该策略来进行调度。
看看https://github.com/apache/storm/blob/master/storm-server/src/main/java/org/apache/storm/scheduler/resource/strategies/scheduling/defaultresourceawarestrategy.java#l108 以及GenericResourceWareStategy中的相应行。那里的评论解释了不同策略的作用。

相关问题