2012-12-07 6 views
1

JobTracker가 TaskTracker에 맵 작업을 할당 할 때 NameNode와 대화해야합니까? 아니면 InputSplit 자체에서 정보를 얻을 수 있습니까? 코드를 살펴보면 InputSplits가 BlockLocations로 압축되어 있음을 알 수 있습니다. JobTracker가이 정보와 함께 가지 않거나 네임 노드로 작업해야합니까?Hadoop - 매핑 할 파일

답변

0

클라이언트는 분할 정보를 계산하고 분할 정보와 함께 HDFS에 씁니다.

당신은 하둡 1.x에서 JobSplit.SplitMetaInfo에보고도 위치를 직렬화 구현 직렬화가있을 수 있습니다.

은 JobTracker는 슬롯을 사용할 수있는 경우 위치가 빠른 실행을위한 다만 힌트입니다 이러한 직렬화 및 일정을, 선택합니다.

+0

토마스에게 감사드립니다. 그래서, 이것은 단지 암시 일뿐입니다. 시나리오를 가져 가자. JobTracker가 실행할 데이터가 TaskTracker의 로컬 드라이브에 있음을 확인하면 TaskTracker에이를 알릴 수 있습니까? 아니면 TaskTracker가이를 식별하기 위해 NameNode와 접촉하게됩니까? – Suresh

+0

그러한 의사 소통이 없습니다. Jobtracker 내부의 스케줄러는'SplitMetaInfo'를 조사 할 것이고 그 위치에서 사용 가능한 슬롯이 있다면 그것은 tasktracker에게 지시를 보내어 그 입력으로 작업을 수행 할 것입니다. –

+0

데이터가있는 컴퓨터 (DataLocal 없음)에서 데이터를 사용할 수없는 경우 데이터가있는 컴퓨터를 찾아야합니까? TaskTracker가 NameNode와 대화해야하거나 메타 데이터 (블록 위치 포함)를 사용하고 다른 컴퓨터와 직접 대화 할 수 있습니까? – Suresh

0

JobTracker를 블록의 위치를 ​​얻을 수있는 네임 노드에 연락한다. 이 프로세스는 작업이 처리중인 블록 수가 매우 큰 경우 특히 시간이 걸릴 수 있습니다.

+0

감사합니다. Donald. 내 혼란은 InputSplit이 데이터를 얻을 수있는 가능한 위치와 호스트에 대한 메타 데이터를 가지고 있기 때문에 Job Tracker가이 작업을 수행해야하는 이유와 관련이 있습니다. 감사. – Suresh

+0

InputSplit은 실제로 알지 못합니다. 찾으려면 NameNode로 이동해야합니다. –