복붙노트

[HADOOP] 작은 파일을 사용하는 경우 HDFS에 메모리 손실이 있습니까?

HADOOP

작은 파일을 사용하는 경우 HDFS에 메모리 손실이 있습니까?

나는 하둡 (Hadoop)의 인용문 (Quoting) 아래를 찍었다 - The Definitive Guide : 그러나 작은 파일은 파일의 원시 내용을 저장하는 데 필요한 것보다 더 많은 디스크 공간을 차지하지 않습니다. 예를 들어 128MB의 블록 크기로 저장된 1MB 파일은 128MB가 아닌 1MB의 디스크 공간을 사용하며,

여기 내 질문

1) 128MB의 블록 크기로 저장된 1MB 파일은 128MB가 아닌 1MB의 디스크 공간을 사용합니다.) hdfs는이 블록에서 나머지 127M을 어떻게 사용합니까?

2) 같은 블록에 다른 파일을 저장할 기회가 있습니까?

해결법

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

    1.참고:

    참고:

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

    2.NameNode 메모리 사용 :

    NameNode 메모리 사용 :

    HDFS의 모든 파일, 디렉토리 및 블록은 객체로 표시됩니다. 즉 네임 노드의 각 엔트리는 아이템에 반영된다. namenode의 메모리에 저장되며 각 오브젝트 / 항목은 150 바이트에서 200 바이트의 namenode 메모리를 차지합니다 .Memorandum은 저장해야하는 메타 데이터의 결과로 적은 수의 큰 파일을 선호합니다.

    기본 블록 크기가 64MB 인 1GB 파일을 생각해보십시오.

    -Stored as a single file 1 GB file
      Name: 1 item
      Block=16
      Total Item = 16*3( Replication factor=3) = 48 + 1(filename) = 49
      Total NameNode memory: 150*49
    
    -Stored as 1000 individual 1 MB files
      Name: 1000
      Block=1000
      Total Item = 1000*3( Replication factor=3) = 3000 + 1000(filename) = 4000
      Total NameNode memory: 150*4000
    

    위의 결과는 많은 수의 작은 파일이 NameNode 메모리의 더 많은 공간을 차지하므로 naemnode 메모리의 오버 헤드라는 것을 분명히합니다. 블록 이름 및 블록 ID는 특정 데이터 블록의 고유 ID입니다.이 고유 ID는 식별에 익숙해집니다. 클라이언트가 데이터 읽기를 요청할 때 데이터를 읽는 동안 블록. 공유 할 수 없습니다.

    HDFS는 대용량 파일을 처리하도록 설계되었습니다. 1000Mb 파일이 있다고 가정 해 보겠습니다. 4K 블록 크기를 사용하면 256,000 해당 파일을 가져 오기위한 요청 (블록 당 1 요청). HDFS에서 이러한 요청은 네트워크를 통해 발생하며 많은 오버 헤드가 있습니다.

    각 요청은 이름 노드가 처리하여 해당 블록을 찾을 수있는 위치를 찾아야합니다. 그것은 많은 교통입니다! 64MB 블록을 사용하면 요청 수가 16 개로 줄어들어 이름 노드의 오버 헤드 및로드 비용이 크게 줄어 듭니다.

    이러한 점을 염두에두기 위해 hadoop은 큰 블록 크기를 권장합니다.

    HDFS 블록 크기는 큰 파일을 작은 덩어리로 분할하는 논리적 단위입니다. 이 덩어리는 기본적으로 블록이라고합니다. 이들 덩어리 / 블록은 데이터의 추가 병렬 처리 동안 사용된다. MapReduce 프로그래밍 또는 다른 모델 HDFS 내에서 그것의 읽기 / 처리.

    파일이이 논리 블록에 맞을만큼 작 으면 하나의 블록이 파일에 할당되고 파일 크기 및 사용중인 Unix 파일 시스템에 따라 디스크 공간을 차지하십시오. 디스크에 파일을 저장하는 방법에 대한 세부 정보는이 링크에서 사용할 수 있습니다.

    HDFS 블록 크기 대 실제 파일 크기

    HDFS 블록 크기는 논리 단위로 메모리의 물리적 단위가 아니므로 메모리 낭비가 없습니다.

    이 링크는 작은 파일의 문제점을 이해하는 데 유용합니다.

    Link1, Link2

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

    3.HAR 파일

    HAR 파일

    시퀀스 파일

    시퀀스 파일에 대한 추가 정보

  4. from https://stackoverflow.com/questions/30165303/is-there-any-memory-loss-in-hdfs-if-we-use-small-files by cc-by-sa and MIT license