복붙노트

[HADOOP] hadoop mapreduce를 사용하여 중복 제거를위한 키 값 쌍 결정

HADOOP

hadoop mapreduce를 사용하여 중복 제거를위한 키 값 쌍 결정

Hadoop Mapreduce를 사용하여 파일의 중복 제거를 구현하고 싶습니다. 매퍼 함수의 입력 디렉토리에있는 모든 파일의 MD5 합계를 계산하여이를 수행 할 계획입니다. 이러한 MD5 해시는 리듀서의 핵심이므로 동일한 해시를 가진 파일은 동일한 리듀서로 이동합니다.

하둡에서 매퍼의 기본값은 키가 줄 번호이고 값이 파일의 내용이라는 것입니다.

또한 파일이 크면 64MB 청크로 분할되어 Hadoop의 최대 블록 크기입니다.

키 값을 파일 이름으로 설정하여 매퍼에서 파일의 해시를 계산할 수 있습니까? 또한 두 개의 노드가 동일한 파일의 해시를 계산하지 않도록하는 방법은 무엇입니까?

해결법

  1. ==============================

    1.하나의 매퍼에 대한 입력으로 전체 파일을 가져야하는 경우 isSplitable을 false로 유지해야합니다. 이 시나리오에서는 전체 파일을 매퍼에 대한 입력으로 가져 와서 MD5를 동일하게 적용하여 키로 내보낼 수 있습니다.

    하나의 매퍼에 대한 입력으로 전체 파일을 가져야하는 경우 isSplitable을 false로 유지해야합니다. 이 시나리오에서는 전체 파일을 매퍼에 대한 입력으로 가져 와서 MD5를 동일하게 적용하여 키로 내보낼 수 있습니다.

    여기에서 WholeFileInputFormat (hadoop 코드의 일부가 아님)을 사용할 수 있습니다. 온라인으로 구현하거나 Hadoop : The Definitive Guide 책에서 구할 수 있습니다.

    값은 파일 이름이 될 수 있습니다. 컨텍스트 인스턴스에서 getInputSplit ()을 호출하면 파일 분할로 캐스트 할 수있는 입력 분할이 제공됩니다. 그런 다음 fileSplit.getPath (). getName ()은 파일 이름을 나타냅니다. 그러면 파일 이름이 제공되며 값으로 생성 될 수 있습니다.

    나는 이것을하지 않았다-org.apache.hadoop.hdfs.util.MD5FileUtils, 그러나 javadocs는 이것이 당신에게 좋을 수도 있다고 말합니다.

    WholeFileInputFormat 및 관련 RecordReader에 대한 교과서 src 링크가 참조 용으로 포함되었습니다

    1) WholeFileInputFormat

    2) WholeFileRecordReader

    MD5FileUtils에 대한 grepcode 링크 포함

  2. from https://stackoverflow.com/questions/22740710/deciding-key-value-pair-for-deduplication-using-hadoop-mapreduce by cc-by-sa and MIT license