调度器:
Storm有四种内置的调度器:DefaultScheduler, IsolationScheduler, MultitenantScheduler, ResourceAwareScheduler.
Pluggable scheduler:
为了给worker安排executor你可以通过自定义调度器来代替默认的调度器,可以在storm.yaml中使用storm.scheduler来配置调度器,但是自定义的调度器必须实现IScheduler接口。
Isolation scheduler:
isolation scheduler使得很多topology分享一个集群是安全方便的,isolation scheduler使得定制化哪些topologies应该被孤立,意味着他们能够运行在集群中的一些特定机器上,其他的topology不能运行在这些机器上。这些独立的topology在集群中被给予很高的优先权,所以与其他的topology竞争资源的时候,这些topology将会得到资源,甚至为了确保这些独立topology获得足够的资源,非独立的topology的资源可能被抢占,所有的独立topology获得资源之后,剩下的机器会被非独立的topology获得。
你可以在Nimbus中配置"storm.scheduler"为"org.apache.storm.scheduler.IsolationScheduler" 来实现独立topology的配置,
然后通过设置"isolation.scheduler.machines"为每个独立的topology设置他所需要的机器数量,例如:
isolation.scheduler.machines:
"my-topology": 8
"tiny-topology": 1
"some-other-topology": 3
被提交到集群的topology没在上面列表中的将不会被独立,注意只有管理员权限可以设置这个,普通用户是不行的。
isolation scheduler 通过在topologies中提供隔离解决了资源竞争问题,这样做的目的是生产环境的topology应该被独立,还在测试或者开发的不应该在这之中,集群中剩下的机器是双重角色,一方面是独立topology的故障转移和非独立topology的运行。
Storm有四种内置的调度器:DefaultScheduler, IsolationScheduler, MultitenantScheduler, ResourceAwareScheduler.
Pluggable scheduler:
为了给worker安排executor你可以通过自定义调度器来代替默认的调度器,可以在storm.yaml中使用storm.scheduler来配置调度器,但是自定义的调度器必须实现IScheduler接口。
Isolation scheduler:
isolation scheduler使得很多topology分享一个集群是安全方便的,isolation scheduler使得定制化哪些topologies应该被孤立,意味着他们能够运行在集群中的一些特定机器上,其他的topology不能运行在这些机器上。这些独立的topology在集群中被给予很高的优先权,所以与其他的topology竞争资源的时候,这些topology将会得到资源,甚至为了确保这些独立topology获得足够的资源,非独立的topology的资源可能被抢占,所有的独立topology获得资源之后,剩下的机器会被非独立的topology获得。
你可以在Nimbus中配置"storm.scheduler"为"org.apache.storm.scheduler.IsolationScheduler" 来实现独立topology的配置,
然后通过设置"isolation.scheduler.machines"为每个独立的topology设置他所需要的机器数量,例如:
isolation.scheduler.machines:
"my-topology": 8
"tiny-topology": 1
"some-other-topology": 3
被提交到集群的topology没在上面列表中的将不会被独立,注意只有管理员权限可以设置这个,普通用户是不行的。
isolation scheduler 通过在topologies中提供隔离解决了资源竞争问题,这样做的目的是生产环境的topology应该被独立,还在测试或者开发的不应该在这之中,集群中剩下的机器是双重角色,一方面是独立topology的故障转移和非独立topology的运行。