2011-10-06 4 views
0

각 행에 임의의 정수가있는 파일이 있고 Hadoop을 사용하여 파일을 정렬하려면 내 매퍼 및 축소 기의 입력/출력 키와 값은 무엇입니까?Hadoop 맵 정렬 및 키 값 감소

+0

자세한 설명은 [how-to-produce-sorted-file-using-hadoop] (http://sarveshspn.blogspot.in/2012/02/how-to-produce-sorted- – seahorse

답변

1

야후는 sorted 데이터의 페타 및 테라 바이트를 가지고 있습니다. 기타 (Google 포함) 정기적으로 수행하면 인터넷에서 정렬 기준을 검색 할 수 있습니다. 야후는 그들이 수행 한 방법에 대해 paper을 게시했습니다.

'org.apache.hadoop.examples.terasort'패키지에는 데이터 정렬을위한 샘플 코드가 있습니다.

Cloudera 블로그 here에서 더 많은 정보를 찾을 수 있습니다. 정렬을 쉽게하는 몇 가지 내장 클래스가 있습니다.

총 주문 파티션 HADOOP-3019. TeraSort 레코드에서 분사 한 Hadoop에는 현재 전역 정렬 된 출력을 효율적으로 생성하기위한 라이브러리 클래스가 있습니다. InputSampler는 입력 데이터의 서브 세트를 샘플링하는 데 사용되며, TotalOrderPartitioner는 맵 출력을 거의 동일한 크기의 파티션으로 분할하는 데 사용됩니다. 아주 깔끔한 물건들 - 비록 당신이 그것을 사용할 필요가 없더라도, 볼만한 가치가 있습니다.

자세한 내용은 here을 참조하십시오.

+0

저는 Hadoop을 처음 사용합니다. 위에서 설명한 파일을 정렬하기 위해 매퍼와 감속기의 키/값이 더 구체적 일 수 있습니까? – user176121

+0

원래 게시물에서 언급했듯이 자세한 내용은 [여기] (http://stackoverflow.com/questions/7607569/hadoop-what-should-be-mapped-and-what-should-be-reduced)를 확인하십시오. –

0

보다 이론적 인 답변 : 다른 정렬 알고리즘 (빠른 정렬, 병합 정렬, 버블 정렬 등)을 고려하십시오.

선형 시간에 두 개의 정렬 된 목록을 병합 할 수 있다는 사실 때문에 모든 정렬 알고리즘을 "병합"단계를 사용하여 병렬 처리하는 것은 매우 간단합니다. 따라서이 작업을 수행하는 데 사용할 수있는 다양한 옵션이 있습니다.

terasort는 단순히 분할 및 병합으로 모든 문제를 해결할 수 없기 때문에 이보다 훨씬 똑똑합니다. 최종 "병합"단계는 분할이 많이있을 때 대규모 축소 단계에 해당합니다.