will what the that technology specific run determines descarga datanode component common hadoop namenode

hadoop - what - Límite de cantidad de archivos Namenode



which component determines the specific nodes that a mapreduce task will run on? (3)

¿Alguien sabe cuántos bytes ocupan por archivo en namenode de Hdfs? Quiero estimar cuántos archivos se pueden almacenar en un solo namenode de 32G de memoria.


Cada archivo o directorio o bloque ocupa aproximadamente 150 bytes en la memoria namenode. [1] Por lo tanto, un clúster con un namenode con 32G RAM puede admitir un máximo de (suponiendo que namenode es el cuello de botella) alrededor de 38 millones de archivos. (Cada archivo también ocupará un bloque, por lo que cada archivo tendrá una vigencia de 300 bytes. También supongo que tendrá una replicación de 3x, por lo que cada archivo ocupará 900 bytes)

En la práctica, sin embargo, el número será mucho menor porque todos los 32G no estarán disponibles para el namenode para mantener el mapeo. Puede aumentarlo asignando más espacio de montón al namenode en esa máquina.

La replicación también lo hace en menor grado. Cada réplica adicional agrega alrededor de 16 bytes al requisito de memoria. [2]

[1] http://www.cloudera.com/blog/2009/02/the-small-files-problem/

[2] http://search-hadoop.com/c/HDFS:/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfo.java%7C%7CBlockInfo


(Cada metadata de archivo = 150bytes) + (metadatos de bloque para el archivo = 150bytes) = 300bytes así que 1million de cada uno con 1 bloque consumirá = 300 * 1000000 = 300000000bytes = 300MB para factor de replicación de 1. con factor de replicación de 3 requiere 900MB .

Así que como regla general por cada 1 GB, puedes almacenar 1 millón de archivos.


Cloudera recomienda 1 GB de espacio de montón de NameNode por millón de bloques. 1 GB por cada millón de archivos es menos conservador pero debería funcionar también.

Además, no es necesario multiplicar por un factor de replicación, una respuesta aceptada es incorrecta.

Usando el tamaño de bloque predeterminado de 128 MB, un archivo de 192 MB se divide en dos archivos de bloque, uno de 128 MB y otro de 64 MB. En NameNode, los objetos del espacio de nombres se miden por la cantidad de archivos y bloques. El mismo archivo de 192 MB está representado por tres objetos de espacio de nombres (1 archivo de inodo + 2 bloques) y consume aproximadamente 450 bytes de memoria.

Un archivo de datos de 128 MB está representado por dos objetos de espacio de nombres en el NameNode (1 archivo inode + 1 bloque) y consume aproximadamente 300 bytes de memoria. Por el contrario, 128 archivos de 1 MB cada uno están representados por 256 objetos de espacio de nombres (128 inodos de archivos + 128 bloques) y consumen aproximadamente 38.400 bytes.

La replicación afecta el espacio en disco, pero no el consumo de memoria . La replicación cambia la cantidad de almacenamiento requerido para cada bloque, pero no la cantidad de bloques. Si un archivo de bloque en un DataNode, representado por un bloque en el NameNode, se replica tres veces, la cantidad de archivos de bloques se triplica, pero no el número de bloques que los representan.

Ejemplos:

  1. 1 x 1024 MB de archivo 1 inodo de archivo 8 bloques (1024 MB / 128 MB) Total = 9 objetos * 150 bytes = 1.350 bytes de memoria de almacenamiento dinámico
  2. 8 x 128 MB de archivos 8 archivos de inodos 8 bloques Total = 16 objetos * 150 bytes = 2.400 bytes de memoria de almacenamiento
  3. 1.024 x 1 MB archivos 1.024 archivos inodos 1.024 bloques Total = 2.048 objetos * 150 bytes = 307.200 bytes de memoria de almacenamiento

Aún más ejemplos artículo artículo de origen de cloudera.