복붙노트

[HADOOP] 최상의 MapReduce 작업 성능을 위해 HDFS의 파일 크기는 얼마입니까?

HADOOP

최상의 MapReduce 작업 성능을 위해 HDFS의 파일 크기는 얼마입니까?

외부 소스에서 HDFS로 텍스트 파일을 복사하고 싶습니다. 크기를 기준으로 파일을 결합하고 분할 할 수 있다고 가정합시다. 최고의 사용자 정의 맵 작업 감소를 위해 텍스트 파일의 크기는 얼마입니까? 크기가 중요합니까?

해결법

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

    1.HDFS는 작은 파일이 아닌 매우 큰 파일을 지원하도록 설계되었습니다. HDFS와 호환되는 응용 프로그램은 큰 데이터 세트를 처리하는 응용 프로그램입니다. 이러한 응용 프로그램은 데이터를 한 번만 작성하지만 한 번 이상 읽은 후 스트리밍 속도에서 이러한 읽기를 만족해야합니다. HDFS는 파일에서 한 번에 여러 번 쓰기 시맨틱을 지원합니다. HDFS 아키텍처에는 블록 개념이 있습니다. HDFS에서 사용되는 일반적인 블록 크기는 64MB입니다. 큰 파일을 HDFS에 배치하면 기본 블록 구성을 기준으로 64MB 청크로 잘립니다. 파일이 1GB라고 가정합니다. 해당 파일을 HDFS에 배치하려면 1GB / 64MB = 16 개의 분할 / 블록이 있으며이 블록은 데이터 노드에 분산됩니다. 파일 분할의 목표는 병렬 처리 및 데이터 페일 오버입니다. 이 블록 / 청크는 사용자에 따라 다른 DataNode에 상주합니다. 클러스터 구성.

    HDFS는 작은 파일이 아닌 매우 큰 파일을 지원하도록 설계되었습니다. HDFS와 호환되는 응용 프로그램은 큰 데이터 세트를 처리하는 응용 프로그램입니다. 이러한 응용 프로그램은 데이터를 한 번만 작성하지만 한 번 이상 읽은 후 스트리밍 속도에서 이러한 읽기를 만족해야합니다. HDFS는 파일에서 한 번에 여러 번 쓰기 시맨틱을 지원합니다. HDFS 아키텍처에는 블록 개념이 있습니다. HDFS에서 사용되는 일반적인 블록 크기는 64MB입니다. 큰 파일을 HDFS에 배치하면 기본 블록 구성을 기준으로 64MB 청크로 잘립니다. 파일이 1GB라고 가정합니다. 해당 파일을 HDFS에 배치하려면 1GB / 64MB = 16 개의 분할 / 블록이 있으며이 블록은 데이터 노드에 분산됩니다. 파일 분할의 목표는 병렬 처리 및 데이터 페일 오버입니다. 이 블록 / 청크는 사용자에 따라 다른 DataNode에 상주합니다. 클러스터 구성.

    매퍼가 할당되는 방법

    매퍼 수는 MapReduce 작업의 데이터 분할 수에 따라 결정됩니다. 일반적인 InputFormat에서는 파일 수와 파일 크기에 정비례합니다. HDFS 블록 구성이 64MB (기본 크기)로 구성되었고 100MB 크기의 파일이 있다고 가정합니다. 그런 다음 2 분할이 있고 2 블록을 차지하고 2 매퍼가 블록을 기반으로 할당되지만 30MB 크기의 각 파일 (각 파일)이있는 경우 각 파일은 하나의 블록을 차지하며 그에 따라 매퍼가 할당됩니다.

    따라서 큰 파일을 분할 할 필요는 없지만 매우 작은 파일을 처리하는 경우 결합 할 가치가 있습니다.

    이 링크는 작은 파일의 문제를 이해하는 데 도움이됩니다.

    HDFS 디자인에 대한 자세한 내용은 아래 링크를 참조하십시오.

    http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

  2. from https://stackoverflow.com/questions/30309766/what-should-be-the-size-of-the-file-in-hdfs-for-best-mapreduce-job-performance by cc-by-sa and MIT license