2017-12-11 39 views
0

Apache Storm을 연구 중입니다. 소스 코드 & & 개발자 설명서 & & JavaDoc & & Storm에 대한 유용한 블로그.Apache Storm의 Scheduler와 Strategy의 차이점

많은 질문이 나를 혼란스럽게 만들었습니다. 대부분의 문서와 블로그는 스톰 클러스터가 토폴로지를 작업자에게 할당 할 때 다른 스케줄러가 다른 할당 스타일을 유도한다고 전했다. 그러나 Storm이 토폴로지를 할당 할 때 DefaultResourceAwareStrategy 및 다른 두 가지 전략과 같은 "org.apache.storm.scheduler.resource.strategies.XXX"패키지에서 Strategies가 수행하는 역할은 무엇인지 혼란 스럽습니다.

Storm 예제 프로그램에서 토폴로지를 만들 때 전략을 선택하기 위해 setTopologyStrategy() 메소드에 적용된 이러한 전략을 기억했습니다. 그럼, ResourceAwareSchedule과 같은 스케줄러와 TaskResourceAwareStrategy와 같은 전략 사이에는 어떤 차이가 있습니까? 과제 할당을 결정하는 실제 요소는 어느 것입니까?

Google에서이 문제를 검색했지만 명확한 답변이 없습니다. 나는 스케줄러와 전략의 차이점을 가능한 한 명확하게 설명 할 수 있기를 바란다. 고마워.

답변

0

스톰은 몇 가지 다른 스케줄러를 가지고 있습니다. 그들 중 일부는 감독자 노드의 자원을 고려하지 않습니다. 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과 GenericResourceAwareStrategy의 해당 줄을보십시오. 거기에있는 설명은 다른 전략이하는 것을 설명합니다.