복붙노트

[HADOOP] Hadoop으로 많은 수의 작은 파일 처리

HADOOP

Hadoop으로 많은 수의 작은 파일 처리

Hadoop 예제 프로그램 WordCount를 사용하여 작은 파일 / 웹 페이지 (cca. 2-3 kB)의 큰 세트를 처리합니다. hadoop 파일의 최적의 파일 크기와는 거리가 멀기 때문에 프로그램이 매우 느립니다. 그것이 직업을 설정하고 찢는 데 드는 비용이 직업 그 자체보다 훨씬 큽니다. 이러한 작은 파일은 또한 파일 이름에 대한 네임 스페이스가 고갈되도록합니다.

이 경우에는 HDFS 아카이브 (HAR)를 사용해야한다는 것을 알았지 만,이 아카이브에서 읽는 WordCount 프로그램을 수정하는 방법을 모르겠습니다. 프로그램을 수정없이 계속 사용할 수 있습니까? 아니면 수정이 필요합니까?

압축 파일에 많은 파일을 압축하더라도 성능을 향상 시키려면 문제가 남아 있습니다. 나는 비록 내가 여러개의 파일을 꾸밀더라도, 한개의 아카이브 안에있는이 파일들은 하나의 매퍼에 의해 처리되지 않을 것이지만 나의 경우에는 성능을 향상시키지 못할 것이라고 많은 사람들이 읽었다.

이 질문이 너무 단순한 경우, 하둡에 초보자이며 그 경험이 거의 없음을 이해하십시오.

해결법

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

    1.HDFS를 사용하면 hadoop이 많은 양의 작은 파일을 처리하게 만드는 것을 변경하지 않습니다. 이 경우 가장 좋은 옵션은 아마도 파일을 단일 (또는 거의 큰) 파일로 만드는 것일 것입니다. 이렇게하면 매퍼 수를 줄일 수 있으므로 처리해야하는 항목 수가 줄어 듭니다.

    HDFS를 사용하면 hadoop이 많은 양의 작은 파일을 처리하게 만드는 것을 변경하지 않습니다. 이 경우 가장 좋은 옵션은 아마도 파일을 단일 (또는 거의 큰) 파일로 만드는 것일 것입니다. 이렇게하면 매퍼 수를 줄일 수 있으므로 처리해야하는 항목 수가 줄어 듭니다.

    HDFS를 사용하면 분산 시스템에서 작업하는 경우 성능을 향상시킬 수 있습니다. psuedo-distributed (하나의 머신) 만 수행한다면 HDFS는 성능을 향상시키지 않습니다. 한계는 기계입니다.

    많은 수의 작은 파일에서 작업 할 때 많은 수의 매퍼와 축소 기가 필요할 것입니다. setup / down은 파일 자체의 처리 시간과 비슷할 수 있으므로 큰 오버 헤드가 발생합니다. 파일을 저장하면 작업에 대한 hadoop 실행 횟수가 줄어들어 성능이 향상됩니다.

    파일을 저장하기 위해 HDFS를 사용할 때 볼 수있는 이점은 여러 대의 컴퓨터가있는 분산 모드입니다. 파일은 기계간에 블록 (기본 64MB)으로 저장되며 각 기계는 기계에 상주하는 데이터 블록을 처리 할 수 ​​있습니다. 이렇게하면 네트워크 대역폭 사용이 줄어들어 처리 과정에서 병목 현상이 발생하지 않습니다.

    파일을 보관하면 hadoop이 아카이브를 보관하려고하면 hadoop이 여전히 많은 수의 작은 파일을 갖게됩니다.

    희망이 당신의 이해에 도움이됩니다.

  2. ==============================

    2.Hadoop에 대한 여전히 제한적인 이해로, 올바른 해결책은 HTML 파일을 값으로 포함하고 URL을 키로 포함하는 SequenceFile을 만드는 것이라고 생각합니다. SequenceFile을 통해 M / R 작업을 수행하면 각 매퍼는 분할 된 크기에 따라 많은 파일을 처리합니다. 각 파일은 맵 기능에 단일 입력으로 제공됩니다. 이러한 파일을 읽으려면 InputFormat으로 SequenceFileAsTextInputFormat을 사용할 수 있습니다.

    Hadoop에 대한 여전히 제한적인 이해로, 올바른 해결책은 HTML 파일을 값으로 포함하고 URL을 키로 포함하는 SequenceFile을 만드는 것이라고 생각합니다. SequenceFile을 통해 M / R 작업을 수행하면 각 매퍼는 분할 된 크기에 따라 많은 파일을 처리합니다. 각 파일은 맵 기능에 단일 입력으로 제공됩니다. 이러한 파일을 읽으려면 InputFormat으로 SequenceFileAsTextInputFormat을 사용할 수 있습니다.

    참조 : Hadoop MapReduce에서 단일지도에 여러 개의 텍스트가 아닌 파일 제공

  3. ==============================

    3.나는 최근에이 기사를 읽었고 최근에 같은 질문을 찾았습니다 :) 항목은 약간 오래된 것입니다. 정확히 얼마나 관련이 있는지 지금은 모르겠습니다. Hadoop의 변경 사항은 매우 빠른 속도로 진행되고 있습니다.

    나는 최근에이 기사를 읽었고 최근에 같은 질문을 찾았습니다 :) 항목은 약간 오래된 것입니다. 정확히 얼마나 관련이 있는지 지금은 모르겠습니다. Hadoop의 변경 사항은 매우 빠른 속도로 진행되고 있습니다.

    http://www.cloudera.com/blog/2009/02/the-small-files-problem/

    블로그 항목은 Hadoop을 시작하는 사람들에게 권장되는 "Hadoop : Definitive Guide, Second Edition"의 저자이기도 한 Tom White의 것입니다.

    http://oreilly.com/catalog/0636920010388

  4. ==============================

    4.Hadoop에 제출하기 전에 파일을 연결할 수 있습니까?

    Hadoop에 제출하기 전에 파일을 연결할 수 있습니까?

  5. ==============================

    5.이 경우 CombineFileInputFormat을 사용하면 작은 숫자의 큰 파일에 적합합니다. 이렇게하면 여러 개의 파일이 하나의 분할로 압축되므로 각 매퍼가 처리 할 수있는 공간이 더 많습니다 (1 분할 = 1 맵 작업). 맵퍼에 대한 전체 처리 시간은 실행중인 맵퍼의 수가 적기 때문에 또한 감소합니다. Ther은 CombineFileInputFormat을 사용하는 아카이브 인식 InputFormat이므로 성능이 향상됩니다.

    이 경우 CombineFileInputFormat을 사용하면 작은 숫자의 큰 파일에 적합합니다. 이렇게하면 여러 개의 파일이 하나의 분할로 압축되므로 각 매퍼가 처리 할 수있는 공간이 더 많습니다 (1 분할 = 1 맵 작업). 맵퍼에 대한 전체 처리 시간은 실행중인 맵퍼의 수가 적기 때문에 또한 감소합니다. Ther은 CombineFileInputFormat을 사용하는 아카이브 인식 InputFormat이므로 성능이 향상됩니다.

  6. from https://stackoverflow.com/questions/5930955/processing-large-set-of-small-files-with-hadoop by cc-by-sa and MIT license