2012-07-06 13 views

risposta

18

Un blocco viene consumato da Hadoop. Ciò non significa che la capacità di archiviazione sarà consumata in modo equivalente.

L'uscita durante la navigazione sul web HDFS da assomiglia a questo:

filename1 file 48.11 KB 3 128 MB 2012-04-24 18:36  
filename2 file 533.24 KB 3 128 MB 2012-04-24 18:36  
filename3 file 303.65 KB 3 128 MB 2012-04-24 18:37 

si vede che ogni dimensione del file è inferiore rispetto alla dimensione del blocco, che è di 128 MB. Questi file sono in KB. La capacità HDFS viene consumata in base alle dimensioni effettive del file, ma un blocco viene consumato per file.

Il numero di blocchi disponibili dipende dalla capacità dell'HDFS. Stai sprecando blocchi perché li esaurirai prima di utilizzare tutta la capacità di archiviazione effettiva. Ricorda che Unix filsystem ha anche il concetto di blocchi ma è un numero molto piccolo di circa 512 byte. Questo concetto è invertito in HDFS dove la dimensione del blocco è mantenuta più grande intorno a 64-128 MB.

L'altra questione è che quando si esegue mappa/ridurre i programmi cercherà di deporre le uova mapper per blocco così in questo caso, quando si elaborano tre file di piccole dimensioni, si può finire per la deposizione delle uova tre mapper di lavorare su di essi alla fine. Questo spreca risorse quando i file sono di dimensioni più ridotte. Aggiungete anche latenza dato che ogni mappatore impiega tempo per spawn e quindi alla fine funziona su un file di dimensioni molto ridotte. Devi compattarli in file più vicini a blocchi per sfruttare i mapper che lavorano su un numero minore di file.

Ancora un altro problema con numerosi file di piccole dimensioni è che carica il namenode che mantiene la mappatura (metadati) di ogni blocco e mappatura del blocco nella memoria principale. Con file più piccoli, si riempie questa tabella più velocemente e sarà richiesta più memoria principale man mano che i metadati aumentano.

Leggi il seguente riferimento:

  1. http://www.cloudera.com/blog/2009/02/the-small-files-problem/
  2. http://www.ibm.com/developerworks/web/library/wa-introhdfs/
  3. Oh! c'è una discussione su SO: Small files and HDFS blocks
Problemi correlati