2013-08-04 4 views
3

Windows 플랫폼에 2 개의 다른 작업자 노드가있는 Hadoop을 설치했습니다 (총 3 개의 노드가 있음). 데모 목적으로 약 1 메가 바이트의 단일 파일을 처리하고 있습니다. 작업자 노드가 처리를 위해이 파일을 분할 할 방법작은 파일에서 HDFS 및 MapReduce의 작동 방식

  1. . 다른 작업자 노드가 각각 341 (1024/3) KB를 처리할까요? 또는 단일 작업자 노드가 파일을 처리합니다.

  2. 그런 파일을 100 개 처리하면. 작업자 노드가 처리 할 파일 수를 나눌 것입니까?

  3. 그리고 약 100MB의 단일 파일을 처리하는 경우.

답변

2

가능성있는 답변, 작업자 노드가 처리를 위해이 파일을 분할 할 방법

. 다른 작업자 노드가 각각 341 (1024/3) KB를 처리합니까? 또는 단일 작업자 노드가 파일을 처리합니까?

일반적으로 Hadoop 분산 파일 시스템 (HDFS)은 Windows에서 사용할 수있는 NTFS 및 FAT와 같은 일반 파일 시스템에 비해 더 큰 블록 크기를 가지고 있습니다. HDFS의 블록은 복제를 통해 여러 노드 (컴퓨터)에 분산되어 있으며 랙 토폴로지 스크립트가 제공되면 복제가보다 효율적으로 처리되고 블록이 더 전략적으로 데이터 손실을 방지 할 수 있습니다 (예 : Hadoop이 모르게 복제 요소 2가있는 블록을 동일한 랙과 전체 랙에 장애가 발생할 수 있습니다. 하나의 랙에 하나의 블록을 저장하고 다른 랙에 다른 복제 된 블록을 저장하는 것이 좋습니다. 기본적으로 한 블록의 크기는 64MB입니다. 따라서 1MB 파일은 아마 단일 블록 안에 있고 물론, 다른 노드에 걸쳐 복제 될 것입니다. 일반적으로 단일 맵은 하나 이상의 블록으로 구성 될 수있는 분할이라고 불리는 것에 작동합니다. 다른지도에서 처리 할 수있는 분할이있을 수 있습니다. TextInputFormat은 보통 endline이있는 텍스트 파일을 구분 기호로 처리하고 각 분할에 대해 실행되는지도를 대략적으로 단일 블록 크기로 취급합니다. 엔드 라인 경계를 보장하기 위해 분할 크기는 블록 크기보다 약간 크거나 작을 수 있습니다. 결론적으로, 정상적인 조건에서 64MB의 단일 블록에있는 1MB 파일은 단일 맵 작업으로 처리됩니다.

그런 파일을 100 개 처리하면. 작업자 노드가 처리 할 파일 수를 나눌 것입니까? 별도 이러한 파일의 100 당신이지도에 대한 분할로 함께 결합하는 과정을 몇 개의 블록 수 CombineInputFormat 같은 것을 사용하지 않는 100지도 작업이 호출 될 확률이있을 경우

.

가능한 경우 100 파일을 단일 파일 및 프로세스로 결합하는 다른 옵션이 있습니다.

약 100MB의 단일 파일을 처리합니까?

다시, 사용자가 블록 크기 가정 할 64메가바이트 것으로, TextInputFormat으로 100MB의 파일은 대략 2 개지도 태스크에 의해 처리되어야한다. 다른 InputFormat으로 말했듯이 사물은 다른 방식으로 처리 될 수 있습니다!

(here에서 발췌) :

추론 적 실행 : 하둡 시스템과 하나의 문제는 많은 노드에서 작업을 분할함으로써, 약간 느린 노드 수 있다는 것입니다 나머지 프로그램의 속도를 제한합니다. 예를 들어 한 노드에 느린 디스크 컨트롤러가있는 노드가있는 경우 다른 노드의 속도의 10 % 만 입력하면됩니다. 따라서 99 개의 맵 작업이 이미 일 때 시스템은 최종 맵 작업이 을 확인하기를 기다리고 있으며 다른 모든 노드보다 훨씬 오래 걸립니다.

작업을 서로 독립적으로 실행하면 개별 작업은 입력의 출처를 알 수 없습니다. 작업은 Hadoop 플랫폼이 적절한 입력 만 제공하도록 신뢰합니다. 따라서 동일한 입력을 병렬로 여러 번 처리하여 시스템 기능 차이 인 을 이용할 수 있습니다. 작업의 대부분이 으로 끝나기 때문에 Hadoop 플랫폼은 작업이 수행되지 않는 여러 노드에서 나머지 작업 중 중복 된 사본 을 예약합니다. 이 프로세스는 추측 실행이라고합니다. 작업이 완료되면이 사실을 JobTracker에 알립니다. 작업이 완료되면 먼저 복사본이 최종 복사본이됩니다. 다른 사본이 추측 적으로 실행 중이면 Hadoop은 TaskTrackers에게 에게 작업을 포기하고 출력을 무시하도록 지시합니다.

+0

점 2. 작업자 노드 1에 처리 할 100 개의 파일이 모두 있다고 가정 할 때 100 개의 Map 작업이 모두 Worker 노드 1에 있습니까? –

+1

@vaibhav : 제가 추가 한 투기 실행 부분을 확인하십시오. 지도는 동일한 컴퓨터 또는 다른 컴퓨터에서 동일한 유형의 여러 블록에 대해 호출됩니다. 어느 쪽이 먼저 끝나면 우승자입니다! –