Hadoop

Hadoop - 다수의 작은 파일 vs 하나의 큰 파일

개발 일기92 2024. 7. 4. 14:12

하둡에서 다수의 작은 파일보다는 하나의 큰 파일을 처리하는게 속도면에서 더 빠르고 효율적이다.

파일에 따라서 작은 용량의 다수 파일을 전처리하여 큰파일로 전처리 작업 후 다음 작업을 실행하는게 더 효율적일 수 있다.

 

왜?

오버헤드 감소: 많은 작은 파일을 읽으려면 많은 메타데이터 작업이 필요하다. 각 파일에는 열기, 메타데이터 읽기 및 닫기가 필요하므로 단일 대형 파일을 읽는 것에 비해 상당한 오버헤드가 추가된다.

효율적인 데이터 현지화: Hadoop의 HDFS는 대용량 파일을 큰 블록(default 128MB)으로 분할하여 효율적으로 처리하도록 설계되었다. 이러한 블록은 여러 노드에서 병렬로 처리되어 처리량과 효율성을 극대화할 수 있다. 작은 파일이 많으면 노드 전체에 걸쳐 이러한 파일을 배포하고 관리하는 효율성이 떨어진다.

네트워크 작업 감소: 파일이 크면 다른 노드에서 데이터를 가져오는 데 필요한 네트워크 작업 수가 줄어든다. 작은 파일이 많으면 각 파일이 서로 다른 노드에 위치할 수 있으므로 네트워크 트래픽과 대기 시간이 늘어난다.

MapReduce 최적화: MapReduce 프레임워크는 대량의 데이터를 처리하는 데 최적화되어 있다. 많은 작은 파일을 처리할 때 프레임워크는 각각 소량의 데이터를 처리하는 많은 map 작업을 초기화하고 관리해야 한다. 이로 인해 작업 설정 시간과 리소스 경합이 증가하여 전반적인 효율성이 저하.

리소스 활용: Hadoop의 잡 트래커는 대규모 데이터 블록에서 작동하는 작업을 처리하도록 설계되었습니다. 많은 작은 파일을 처리하면 작업을 관리하는 오버헤드가 병렬 처리의 이점보다 클 수 있으므로 리소스 활용이 비효율적으로 이어질 수 있다.

 

따라서,

작은 파일 결합: 작은 파일이 많은 경우 Hadoop으로 처리하기 전에 해당 파일을 더 큰 파일로 결합하는 것이 좋다. SequenceFile 또는 CombineFileInputFormat과 같은 도구를 사용하여 처리하는걸 권장.

Hadoop용으로 설계된 파일 형식 사용: Avro, Parquet 및 ORC와 같은 형식은 Hadoop에서 효율적으로 작동하도록 설계되어 더 나은 압축 및 분할 가능한 파일 기능을 제공.

입력 분할 최적화: Hadoop의 CombineFileInputFormat 클래스를 사용하여 작은 파일을 더 큰 분할로 결합하여 처리.

'Hadoop' 카테고리의 다른 글

Hadoop - 설정 파일  (0) 2024.07.07
Hadoop - HDFS 페더레이션  (0) 2024.07.04
Hadoop - HDFS, 네임노드, 데이터 노드, NFS  (0) 2024.05.21
Hive , Impala  (0) 2024.05.17
Hadoop eco system  (1) 2024.05.13