Los bloques de datos en el sistema de archivos distribuido hadoop (hdfs)

Video: Cluster Hadoop. Sistema de Archivos Distribuido HDFS. Ubuntu

Al almacenar un archivo en HDFS, el sistema se descompone en un conjunto de bloques individuales y almacena estos bloques en varios nodos esclavos en el cluster Hadoop. Esto es una cosa totalmente normal para hacer, como todos los sistemas de archivos dividen los archivos en bloques antes de almacenarlos en el disco.

HDFS tiene ni idea (y no le importa) lo que se almacena dentro del archivo, por lo que los archivos RAW no se dividen de acuerdo con las normas que los seres humanos lo entendería. Los seres humanos, por ejemplo, querrían los límites de registro - las líneas que muestran un registro donde comienza y termina - que hay que respetar.

HDFS es a menudo felizmente inconscientes de que el registro final en un bloque puede ser sólo un registro parcial, con el resto de su contenido redirigidos a la siguiente bloque. HDFS sólo quiere asegurarse de que los archivos se dividen en bloques de igual tamaño que coinciden con el tamaño de bloque predefinido para la instancia de Hadoop (a no ser que se ha introducido un valor personalizado para el archivo que se almacena). En la figura anterior, que el tamaño del bloque es de 128 MB.

No todos los archivos que necesita para almacenar es un múltiplo exacto del tamaño de bloque de su sistema, por lo que el bloque de datos final para un archivo sólo utiliza todo el espacio que se necesita. En el caso de la figura anterior, el bloque final de datos es de 1 MB.

Video: Como Instalar Apache Hadoop en Windows

El concepto de almacenamiento de un archivo como una colección de bloques es totalmente coherente con la forma en sistemas de archivos trabajan normalmente. Pero lo que es diferente acerca de HDFS es la escala. Un tamaño típico bloque que se vería en un sistema de archivos en Linux es de 4 KB, mientras que un tamaño de bloque típico de Hadoop es de 128 MB. Este valor es configurable, y se puede personalizar, ya que tanto un nuevo valor predeterminado del sistema y un valor personalizado para archivos individuales.

Hadoop fue diseñado para almacenar datos en la escala de petabytes, donde se reducen al mínimo las posibles limitaciones para el horizontal. El tamaño de bloque de alto es una consecuencia directa de esta necesidad de almacenar datos en una escala masiva.

En primer lugar, cada bloque de datos almacenados en HDFS tiene sus propios metadatos y necesita ser rastreado por un servidor central para que las aplicaciones que necesitan acceder a un archivo específico se pueden dirigir a donde se almacenan todos los bloques del archivo. Si el tamaño de bloque estaban en el rango kilobytes, incluso modestos volúmenes de datos en la escala terabyte abrumaría el servidor de metadatos con demasiados bloques para el seguimiento.

En segundo lugar, HDFS está diseñado para permitir un alto rendimiento de modo que el procesamiento en paralelo de estos grandes conjuntos de datos ocurre tan rápidamente como sea posible. La clave para la escalabilidad de Hadoop en el lado de proceso de datos es, y siempre será, paralelismo - la capacidad de procesar los bloques individuales de estos archivos de gran tamaño en paralelo.

Para habilitar el procesamiento eficiente, un equilibrio debe lograrse. Por un lado, el tamaño del bloque debe ser lo suficientemente grande como para justificar los recursos dedicados a una unidad individual de procesamiento de datos (por ejemplo, un mapa o reducir la tarea). Por otro lado, el tamaño de bloque no puede ser tan grande que el sistema está esperando un tiempo muy largo para una última unidad de procesamiento de datos para terminar su trabajo.

Estas dos consideraciones obviamente dependen de los tipos de trabajo que se realiza en los bloques de datos.

Artículos Relacionados