복붙노트

[HADOOP] 하나의 블록에 여러 개의 파일이 저장되어 있습니까?

HADOOP

하나의 블록에 여러 개의 파일이 저장되어 있습니까?

많은 작은 파일을 HDFS에 저장하면 단일 블록에 저장됩니까?

내 의견으로는,이 작은 파일은이 토론에 따라 하나의 블록에 저장되어야합니다. HDFS 블록 크기 대 실제 파일 크기

해결법

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

    1.Hadoop에서 인용하기 - The Definitive Guide :

    Hadoop에서 인용하기 - The Definitive Guide :

    결론 : 각 파일은 별도의 블록에 저장됩니다.

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

    2.아래는 Hadoop Definitive Guide에 명시된 내용입니다.

    아래는 Hadoop Definitive Guide에 명시된 내용입니다.

    예를 들어, 30MB 파일이 있고 블록 크기가 64MB 인 경우이 파일은 논리적으로 한 블록에 저장되지만 실제 파일 시스템에서는 HDFS가 파일을 저장하는 데 30MB 만 사용합니다. 나머지 30MB는 자유롭게 사용할 수 있습니다.

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

    3.각 블록은 하나의 파일에만 속합니다. 다음과 같이하십시오. 1. 파일의 블록 정보를 얻기 위해 fsck 명령 사용 :

    각 블록은 하나의 파일에만 속합니다. 다음과 같이하십시오. 1. 파일의 블록 정보를 얻기 위해 fsck 명령 사용 :

    hadoop fsck /gavial/data/OB/AIR/PM25/201709/01/15_00.json -files -blocks
    

    이런 식으로 넣어 :

        /gavial/data/OB/AIR/PM25/201709/01/15_00.json 521340 bytes, 1 block(s):  OK
    0. BP-1004679263-192.168.130.151-1485326068364:blk_1074920015_1179253 len=521340 repl=3
    
    Status: HEALTHY
     Total size:    521340 B
     Total dirs:    0
     Total files:   1
     Total symlinks:        0
     Total blocks (validated):  1 (avg. block size 521340 B)
     Minimally replicated blocks:   1 (100.0 %)
     Over-replicated blocks:    0 (0.0 %)
    

    블록 ID :

    blk_1074920015
    

    2. 사용 fsck 명령은 블록 상태를 보여 주며, 이와 같이 넣어 둡니다.

    hdfs fsck -blockId blk_1074920015

    Block Id: blk_1074920015
    Block belongs to: /gavial/data/OB/AIR/PM25/201709/01/15_00.json
    No. of Expected Replica: 3
    No. of live Replica: 3
    No. of excess Replica: 0
    No. of stale Replica: 0
    No. of decommission Replica: 0
    No. of corrupted Replica: 0
    Block replica on datanode/rack: datanode-5/default-rack is HEALTHY
    Block replica on datanode/rack: datanode-1/default-rack is HEALTHY
    

    분명히 블록은 하나의 파일에만 속합니다.

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

    4.예. 많은 수의 작은 파일을 저장하면 블록에 동일한 공간이있을 때까지 단일 블록에 저장됩니다. 하지만 이러한 작은 파일 각각에 대해 각 작은 파일의 namenode에 인덱싱 항목 (파일 이름, 블록, 오프셋)이 만들어지기 때문에 비효율적입니다. 이것은 매우 큰 파일 수가 적지 않고 많은 작은 파일을 가지고 있다면 namenode에서 메타 데이터 용으로 예약 된 메모리를 낭비합니다.

    예. 많은 수의 작은 파일을 저장하면 블록에 동일한 공간이있을 때까지 단일 블록에 저장됩니다. 하지만 이러한 작은 파일 각각에 대해 각 작은 파일의 namenode에 인덱싱 항목 (파일 이름, 블록, 오프셋)이 만들어지기 때문에 비효율적입니다. 이것은 매우 큰 파일 수가 적지 않고 많은 작은 파일을 가지고 있다면 namenode에서 메타 데이터 용으로 예약 된 메모리를 낭비합니다.

  5. from https://stackoverflow.com/questions/21274334/are-multiple-files-stored-in-a-single-block by cc-by-sa and MIT license