2012-07-06 18 views

Respuesta

18

Un bloque es consumido por Hadoop. Eso no significa que la capacidad de almacenamiento se consumirá de manera equivalente.

La salida mientras navega por el HDFS desde web tiene el siguiente aspecto:

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 

se ve que cada tamaño del archivo es menor que el tamaño del bloque, que es de 128 MB. Estos archivos están en KB. La capacidad de HDFS se consume en función del tamaño del archivo real, pero se consume un bloque por archivo.

Hay un número limitado de bloques disponibles según la capacidad del HDFS. Estás desperdiciando bloques, ya que te quedarás sin ellos antes de utilizar toda la capacidad de almacenamiento real. Recuerde que el sistema de archivos de Unix también tiene el concepto de tamaño de bloques, pero es un número muy pequeño de alrededor de 512 Bytes. Este concepto se invierte en HDFS donde el tamaño del bloque se mantiene mayor alrededor de 64-128 MB.

El otro problema es que cuando ejecuta programas map/reduce intentará generar mapper por bloque, así que en este caso cuando está procesando tres archivos pequeños, puede terminar generando tres mappers para trabajar en ellos eventualmente. Esto desperdicia recursos cuando los archivos son de menor tamaño. También agregas latencia ya que cada mapeador toma tiempo para engendrar y, finalmente, funcionaría en un archivo de tamaño muy pequeño. Debes compactarlos en archivos más cercanos al tamaño de bloques para aprovechar el hecho de que los mapeadores trabajan en un menor número de archivos.

Otro problema con numerosos archivos pequeños es que carga namenode que mantiene la asignación (metadatos) de cada bloque y la asignación de fragmentos en la memoria principal. Con archivos más pequeños, llene esta tabla más rápido y se requerirá más memoria principal a medida que crezcan los metadatos.

lea la siguiente referencia:

  1. http://www.cloudera.com/blog/2009/02/the-small-files-problem/
  2. http://www.ibm.com/developerworks/web/library/wa-introhdfs/
  3. Oh! hay una discusión sobre SO: Small files and HDFS blocks
Cuestiones relacionadas