2013-02-12 4 views
0

작은 파일을 처리하기 위해 hadoop을 사용하는 것에 대한 질문이 있습니다. 내 파일에는 약 1,000 개 정도의 레코드 만 있지만 레코드가 대략적으로 노드간에 균등하게 분산되기를 원합니다. 이것을 할 수있는 방법이 있습니까? 나는 hadoop을 처음 사용하고 있으며, 지금까지는 모든 노드가 동시에 여러 노드가 실행되는 것처럼 보인다. 제 질문이 의미가 있는지 또는 무엇인가를 명확히해야하는지 알려주세요. 내가 말했듯이, 나는 Hadoop에 처음 익숙하지만 약간의 설명을 얻기를 바라고 있습니다. 감사.매우 작은 파일을 hadoop으로 처리합니다.

답변

1

NLineInputFormat을 사용하고 각 매퍼에서 처리 할 레코드 수를 지정하십시오. 이렇게하면 단일 블록의 레코드가 여러 매퍼에서 처리됩니다.

+0

Praveen에게 감사드립니다. NLineInputFormat을 사용하면 mapred.max.split.size 및 dfs.block.size에 설정된 값을 무시하게됩니까? – user399540

+0

mapred.max.split.size 및 dfs.block.size를 고려하지 않았다고 생각합니다. 자세한 내용은 [NLineInputFormat.java] (http://goo.gl/mAFbK) 코드를 확인하십시오. –

0

다른 옵션은 한 입력 파일을 여러 입력 파일 (한 입력 경로 디렉토리에 있음)로 분할하는 것입니다. 그런 다음 각 입력 파일을 hdfs에 분산시킬 수 있으며 해당 입력 분할을 소유 한 작업자 시스템에서 맵 작업이 수행됩니다.

관련 문제