2013-09-05 3 views
0

을 분할 "하둡 - 확실한 가이드", 그것은 말한다 ->이위치가 입력 계산되는 방법에

작업을 실행하는 클라이언트가 getSplits을 (호출하여 작업의 분할을 계산), 다음은 JobTracker로 전송 이 회사는 스토리지 위치를 사용하여 맵 작업을 예약하여 작업 추적자에서 처리합니다.

public abstract class InputSplit { 
public abstract long getLength() throws IOException, InterruptedException; 
public abstract String[] getLocations() throws IOException, 
} 

getLocations()는 호스트 이름의 배열을 반환합니다.

질문 1 : 클라이언트는 반환 할 호스트 이름을 어떻게 알 수 있습니까? 구직자의 직업이 아닌가?

질문 2 : 2 개의 다른 InputSplit 개체가 동일한 호스트 이름을 반환 할 수 있습니까? 호스트 이름은 어떻게 결정됩니까? 누구 시죠?

클라이언트가 namenode에 접속하여 파일의 모든 호스트 이름 (복제본 포함)을 가져오고 일부 입력란이 각 inputsplit에 설정된 위치에 도착하는지 확인합니다. 사실입니까?

답변

0

Q 클라이언트는 반환 할 호스트 이름을 어떻게 알 수 있습니까? 구직자의 직업이 아닌가?

가. 입력 분할은 작업 구성에서 사용되는 입력 형식에 의해 작성됩니다. 논리적 인 분할 집합을 만드는 과정에서 이름 노드는 분할을 구성하는 블록의 위치를 ​​묻습니다. 작업 추적기의 책임은 InputSplit의 정보를 기반으로 데이터 지역을 고려하여 맵 태스크를 실행하려고하는지 확인하는 것입니다.

질문 2 : 2 개의 다른 InputSplit 개체가 동일한 호스트 이름을 반환 할 수 있습니까? 호스트 이름은 어떻게 결정됩니까? 누구 시죠?

A. 확실히. 각 입력 스플릿에는 스플릿을 계산하는 고유 수식이 있습니다. 입력 분할은 블록의 크기와 같을 필요는 없다는 것을 명심하십시오.

희망이 도움이됩니다.

+0

당신은 말합니다 : "이름 노드가 스플릿을 구성하는 블록의 위치를 ​​묻습니다." 나의 이해 : 클라이언트는 먼저 namenode와 접촉 한 다음 구직자에게 연락한다. 옳은? 그러나 namenode가 분할 집합을 반환한다는 것에 동의하지 않습니다. 나는 블록의 위치를 ​​리턴한다고 생각하고, 클라이언트는이 블록들을 사용하여 분할을 형성한다. 너 뭐라구? –

관련 문제