복붙노트

[HADOOP] hadoop에서 많은 수의 작은 파일을 어떻게 처리 할 수 ​​있습니까?

HADOOP

hadoop에서 많은 수의 작은 파일을 어떻게 처리 할 수 ​​있습니까?

나는 hadoop에 익숙하지 않고 나는 단어 수의 예에서 많은 수의 작은 파일들을 가지고 일하고있다. 지도 작업이 많아지고 실행 속도가 느려집니다.

어떻게 맵 작업의 수를 줄일 수 있습니까 ??

내 문제에 대한 최선의 해결책이 작은 파일을 큰 파일로 보내면 어떻게 그들을 고양이로 만들 수 있습니까?

해결법

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

    1.TextInputFormat과 같은 것을 사용하는 경우 문제는 각 파일에 최소 1 개의 분할이 있으므로 매핑 수의 상한선은 파일 수이며,이 경우 매우 작은 파일이 많은 경우 각각의 아주 작은 데이터를 처리하는 많은 매퍼가 있습니다.

    TextInputFormat과 같은 것을 사용하는 경우 문제는 각 파일에 최소 1 개의 분할이 있으므로 매핑 수의 상한선은 파일 수이며,이 경우 매우 작은 파일이 많은 경우 각각의 아주 작은 데이터를 처리하는 많은 매퍼가 있습니다.

    이 문제를 해결하려면 CombineFileInputFormat을 사용해야합니다.이 파일은 여러 파일을 같은 분할로 압축합니다 (블록 크기 제한까지 생각합니다). 따라서이 형식으로 매퍼 수는 파일 수와 별개가됩니다. 데이터 양에

    CombineFileInputFormt에서 확장하여 자신 만의 입력 형식을 만들어야합니다. 여기서 구현을 찾을 수 있습니다. InputFormat을 정의한 후에는 CombinedInputFormat 링크 에서처럼 호출하겠습니다. 다음을 수행하여 작업을 사용하도록 지시 할 수 있습니다.

    job.setInputFormatClass(CombinedInputFormat.class);
    
  2. ==============================

    2.Cloudera는 언젠가 작은 파일 문제에 대한 블로그를 올렸습니다. 오래된 항목이지만 제안 된 방법이 계속 적용됩니다.

    Cloudera는 언젠가 작은 파일 문제에 대한 블로그를 올렸습니다. 오래된 항목이지만 제안 된 방법이 계속 적용됩니다.

  3. from https://stackoverflow.com/questions/14541759/how-can-i-work-with-large-number-of-small-files-in-hadoop by cc-by-sa and MIT license