2014-11-11 5 views
0

Mapreduce 1에서 Jobtracker는 NameNode에서 Block 정보를 가져온 다음 Datablock이있는 곳과 동일한 노드에서 사용할 수있는 Task Tracker에 Task (대개)를 할당합니다. 거기에 성능이 향상 될 수 있습니다.YARN에서 컨테이너를 지정하는 방법은 무엇입니까?

어떻게 이것이 YARN에서 처리 되었습니까? 응용 프로그램 관리자는 NameNode에서 블록 정보를 가져와야합니까?

그렇다면 컨테이너가 해당 응용 프로그램 마스터에 할당되는 방법은? Resource Manager가 컨테이너를 할당하는 동안 DataBlock 위치를 고려 했습니까? 또는 임의의 컨테이너를 노드에 할당합니까?

답변

0

기술적으로는 input splits을 계산하기위한 JobClient의 역할을 말하며,이 분할 정보는 ApplicationMaster가 가져오고 ResourceManager에서 컨테이너를 요청하는 동안이 정보를 사용하는 HDFS에 배치됩니다.

기술적으로 Application Master는 모든 맵 작업에 대한 컨테이너를 요청하면서 각 맵 작업의 데이터 지역에 대한 정보를 ResourceManager에 전달합니다. 스케줄러는이 정보를 사용하여 스케줄링 결정을 내리고 로컬 태스크를 데이터에 할당하려고 시도합니다.

+0

컨테이너를 지정할 수 있습니까? 내 커 스터에는 10 개의 InputSplits와 20 개의 노드가 있습니다. 각 Inputsplit은 하나의 노드에서 실행됩니다. 10 개의 노드가 유휴 상태가됩니다. 10 개의 InputSplits에 대해이 노드를 사용할 수 있습니까? 이 그림에 슬롯이 어떻게 들어 옵니까? – Tariq

관련 문제