hadoop - tutorial - reduce mapreduce
Tamaño de bloque grande en HDFS! ¿Cómo se explica el espacio no utilizado? (3)
En el sistema de archivos normal, si creamos un archivo en blanco, también tiene el tamaño 4k, ya que está almacenado en el bloque. En HDFS no sucederá, para un archivo de 1GB solo se usa 1 GB de memoria, no 4 GB. Para ser más claros.
EN SO: tamaño de archivo 1KB, tamaño de bloque: 4KB, memoria utilizada: 4KB, despilfarro: 3 KB. EN HDFS: tamaño de archivo de 1 GB, tamaño de bloque: 4 GB, memoria utilizada: 1 GB, despilfarro: 0 GB, los 3 bloques restantes pueden ser utilizados de forma gratuita por otros bloques.
* No tomes los números en serio, son números cocinados para aclarar puntos.
Si tiene 2 archivos diferentes de 1 GB, habrá 2 bloques de 1 GB cada uno. En el sistema de archivos, si almacena 2 archivos de 1 KB cada uno, tendrá 2 archivos diferentes de 4KB + 4KB = 8KB con un desperdicio de 6KB.
Así que esto hace que HDFS sea mucho mejor que el sistema de archivos. Pero la ironía es que HDFS usa un sistema de archivos local y al final termina con el mismo problema.
Todos sabemos que el tamaño de bloque en HDFS es bastante grande (64M o 128M) en comparación con el tamaño de bloque en los sistemas de archivos tradicionales. Esto se hace para reducir el porcentaje de tiempo de búsqueda en comparación con el tiempo de transferencia (las mejoras en la tasa de transferencia han sido en una escala mucho mayor que las mejoras en el tiempo de búsqueda del disco, por lo tanto, el objetivo al diseñar un sistema de archivos es siempre reducir el Número de búsquedas en comparación con la cantidad de datos a transferir. Pero esto conlleva una desventaja adicional de la fragmentación interna (por lo que los tamaños de bloque del sistema de archivos tradicionales no son tan altos y solo son del orden de unos pocos KB, generalmente 4K o 8K).
Estaba revisando el libro: Hadoop, la Guía Definitiva y encontré esto escrito en algún lugar que un archivo más pequeño que el tamaño de bloque de HDFS no ocupa el bloque completo y no tiene en cuenta el espacio del bloque completo, pero ¿no podía entender cómo? ¿Puede alguien por favor arrojar algo de luz sobre esto?
La división de bloques en HDFS se construye lógicamente sobre los bloques físicos del sistema de archivos subyacente (por ejemplo, ext3 / fat). El sistema de archivos no está dividido físicamente en bloques (por ejemplo, de 64 MB o 128 MB o cualquiera que sea el tamaño del bloque). Es solo una abstracción para almacenar los metadatos en el NameNode. Como el NameNode tiene que cargar todos los metadatos en la memoria, por lo tanto, hay un límite para el número de entradas de metadatos, lo que explica la necesidad de un tamaño de bloque grande.
Por lo tanto, tres archivos de 8 MB almacenados en HDFS ocupan lógicamente 3 bloques (3 entradas de metadatos en NameNode) pero ocupan físicamente 8 * 3 = 24 MB de espacio en el sistema de archivos subyacente.
El tamaño del bloque grande es para tener en cuenta el uso adecuado del espacio de almacenamiento mientras se considera el límite en la memoria de NameNode.
Según el Hadoop - La guía definitiva
A diferencia de un sistema de archivos para un solo disco, un archivo en HDFS que es más pequeño que un solo bloque no ocupa el valor de un bloque completo de almacenamiento subyacente. Cuando no está calificado, el término "bloque" en este libro se refiere a un bloque en HDFS.
Cada bloque en HDFS se almacena como un archivo en el nodo de datos en el sistema de archivos subyacente del sistema operativo (ext3, ext4, etc.) y los detalles correspondientes se almacenan en el nodo de nombre. Supongamos que el tamaño del archivo es de 200 MB y el tamaño de bloque es de 64 MB. En este escenario, habrá 4 bloques para el archivo que corresponderán a 4 archivos en el Nodo de datos de 64 MB, 64 MB, 64 MB y 8 MB de tamaño (suponiendo con una replicación de 1).
Una ls -ltr
en el nodo de datos mostrará los detalles del bloque
-rw-rw-r-- 1 entrenamiento entrenamiento 11 oct 21 15:27 blk_-7636754311343966967_1002.meta
-rw-rw-r-- 1 entrenamiento de entrenamiento 4 oct 21 15:27 blk_-7636754311343966967
-rw-rw-r-- 1 entrenamiento de entrenamiento 99 oct 21 15:29 blk_-2464541116551769838_1003.meta
-rw-rw-r-- 1 entrenamiento de entrenamiento 11403 21 de octubre 15:29 blk_-2464541116551769838
-rw-rw-r-- 1 entrenamiento de entrenamiento 99 oct 21 15:29 blk_-2951058074740783562_1004.meta
-rw-rw-r-- 1 entrenamiento de entrenamiento 11544 21 de octubre 15:29 blk_-2951058074740783562