2013-03-13 2 views
3

200 개의 입력 파일과 20 개의 노드가 있고 각 노드에는 10 개의 매퍼 슬롯이 있다고 가정 해보십시오. Hadoop은 항상 각 노드가 10 개의 입력 파일을 얻고 동시에 10 개의 매퍼를 시작하도록 작업을 균등하게 할당합니까? 이 동작을 강제하는 방법이 있습니까?Hadoop은 항상 노드간에 작업을 균등하게 분산합니까?

답변

2

얼마나 많은 매퍼가 사용되는지는 입력으로 구분 된 입력으로 결정됩니다. 그래서 200 개의 파일을 200 개의 매퍼에 공급할 수 있습니다. 그러나 진정한 대답은 좀 더 복잡합니다. 그것은

  • 파일 크기에 따라 달라집니다 : 파일이 블록 크기보다 큰 경우, 다음

  • 이 파일 분열성있는 크기의 덩어리가 매퍼로 전송 차단합니다. 예를 들어 gzip으로 압축 된 파일은 분할 할 수 없습니다. 그리고 하나의 전체 파일이 하나의 매퍼로 이동합니다 (파일이 블록 크기보다 크더라도).

+0

파일이 블록보다 작다고 가정 해 봅시다. 여기에 또 다른 질문이 있습니다. 20 개의 노드가 있고 각 노드에 10 개의 매퍼가있는 경우 20 개의 입력 파일 만 있으면 어떻게됩니까? 클러스터 전체에 균등하게 분포합니까? 아니면 2 노드 각각 10 파일을 얻을 것인가? – sangfroid

+0

hadoop은 파일이있는 노드에서 작업을 예약하려고 시도합니다. 따라서 작업은 로컬에서 데이터를 사용하고 네트워크를 통해 데이터를 스트리밍하지 않습니다. 그래서, 이것은 추측입니다. 단지 몇몇 노드 만이 매퍼를 실행할 수 있습니다. 그래도 좋은 질문입니다! (실행 횟수를 줄이고 결과를 게시 할 수 있다면 환상적 일 것입니다.) –

관련 문제