Datos! Vivimos en la era de los datos. No es fácil medir el volumen total de datos almacenados electrónicamente pero su constante crecimiento exponencial, ha hecho que los avances tecnológicos en áreas de almacenamiento y distribución de grandes cantidades de información estén en constante desarrollo, aunque en algunos casos, las tecnologías de almacenamiento persistente como los discos duros electromecánicos no estén alineados con esta constante, pues los disco duros presentan un rápido aumento en la capacidad de almacenamiento, pero las velocidades de acceso o transferencia de datos de los disco duros no ha crecido de la misma forma.
Este crecimiento exponencial de información digital y las limitaciones en transferencias de datos en las tecnologías de almacenamiento, ha permitido crear soluciones como Hadoop que nos permiten realizar de manera eficiente el procesamiento, la lectura y la escritura de grandes cantidades de datos en paralelo y en múltiplex discos, donde los discos estan ubicados en diferentes maquinas.
Hadoop tiene un componente que gestiona los archivos de gran tamaño, archivos que crecen por encima de la capacidad de almacenamiento de una única máquina física, por lo cual este componerte se encarga de dividir el archivo para distribuir las diferentes divisiones entre varias máquinas, el nombre del componente es HDFS.
HDFS o Hadoop Distributed File System es un sistema de archivos distribuidos que se encarga del almacenamiento a través de una red de máquinas, el cual esta diseñado para almacenar archivos de gran tamaño con una filosofía de escribir solo una vez y permitir múltiples lecturas, esta filosofía encaja comunmente con una aplicación Map/Reduce o apliciones tipo araña web (web crawler).
El HDFS no requiere de un hardware altamente confiable sino de maquinas comunes del mercado, aunque este tipo de maquinas aumenta la probabilidad de fallo de nodo o maquina, debido a la posibilidad de que una pieza como el disco duro, la memoria o tarjetas de red se averíen, el sistema de archivos tiene la capacidad de realizar una replicación de datos (copias redundantes de los datos guardados en varias maquinas), con el fin de que en el caso de fallo de un nodo se utilice una copia disponible de otro nodo o maquina, evitando así la pérdida de datos y poder seguir trabajando sin interrupción perceptible para el usuario.
Al igual que en un sistema de archivos de un solo disco, los archivos en HDFS se dividen en porciones del tamaño de un bloque , que se almacenan como unidades independientes, esta abstracción de bloque es la que nos permite que un archivo puede ser mayor en capacidad que cualquier unidad de disco de una sola maquina, facilitando el poder almacenar un archivo en múltiples discos de la red de computadores al dividirlo en bloques. Además, los bloques encajan bien con la replicación, proporcionando tolerancia a fallos y alta disponibilidad. En el sistema de archivos HDFS cada bloque se replica en un pequeño número de máquinas separadas físicamente (normalmente tres). Permitiendo que en casos de que un bloque no está disponible sea porque esta corrupto o se daño una maquina o una de sus partes principales , una copia de este bloque se puede leer desde otra ubicación de una manera transparente para el cliente.
HDFS implementa la replicación utilizando el concepto de bloque de disco como se menciono anteriormente, el cual es la cantidad mínima de datos que se pueden leer o escribir en un disco. En este caso el sistema de archivos HDFS tiene un bloque por defecto de 64 MB como unidad de tamaño básico para la partición de un archivo , siendo este muy superior al de los discos. La razón de su gran tamaño es minimizar el costo de búsquedas, ya que este tamaño presenta tiempos de búsqueda de bloque en disco inferior al tiempo de transferencia de bloque desde el disco a la memoria RAM. Para mejorar la velocidad de transferencia de bloque a memoria RAM se debe realizar una disposición de los siguientes bloques del archivo en forma secuencial y no aleatoria en el disco, permitiendo por la secuencia de bloques un flujo continuo o streaming de datos hacia la memoria.
HDFS tiene una característica de los sistemas distribuidos contemporáneos que es la separación de los datos de los metadatos, esto es con el fin de simplificar la administración de almacenamiento, ya que en el caso de HDFS los bloques tiene un tamaño fijo y no almacenan información de los metadatos, lo que facilita el calculo para determinar la capacidad de bloques por unidad de disco, sin tener que preocuparse por el espacio que genera la información de metadatos como los permisos de creación, modificación y tiempos de acceso para los archivos, el árbol de directorios, entre otros, el cual se almacena en maquinas(nodos) separadas de los datos.
Para realizar esta separación de los datos de los metadatos el sistema HDFS tiene dos tipo de nodos operativos que funcionan con un patrón maestro esclavo, el maestro es el NameNodes y el esclavo es el DataNodes:
En conclusión este sistema de archivo esta en constante desarrollo, con una gran adopción por parte de comunidad BIG DATA, la cual ha echo del HDFS el estándar de facto en las soluciones de grandes volúmenes de información.
Otros Posts:
Este crecimiento exponencial de información digital y las limitaciones en transferencias de datos en las tecnologías de almacenamiento, ha permitido crear soluciones como Hadoop que nos permiten realizar de manera eficiente el procesamiento, la lectura y la escritura de grandes cantidades de datos en paralelo y en múltiplex discos, donde los discos estan ubicados en diferentes maquinas.
Hadoop tiene un componente que gestiona los archivos de gran tamaño, archivos que crecen por encima de la capacidad de almacenamiento de una única máquina física, por lo cual este componerte se encarga de dividir el archivo para distribuir las diferentes divisiones entre varias máquinas, el nombre del componente es HDFS.
HDFS o Hadoop Distributed File System es un sistema de archivos distribuidos que se encarga del almacenamiento a través de una red de máquinas, el cual esta diseñado para almacenar archivos de gran tamaño con una filosofía de escribir solo una vez y permitir múltiples lecturas, esta filosofía encaja comunmente con una aplicación Map/Reduce o apliciones tipo araña web (web crawler).
El HDFS no requiere de un hardware altamente confiable sino de maquinas comunes del mercado, aunque este tipo de maquinas aumenta la probabilidad de fallo de nodo o maquina, debido a la posibilidad de que una pieza como el disco duro, la memoria o tarjetas de red se averíen, el sistema de archivos tiene la capacidad de realizar una replicación de datos (copias redundantes de los datos guardados en varias maquinas), con el fin de que en el caso de fallo de un nodo se utilice una copia disponible de otro nodo o maquina, evitando así la pérdida de datos y poder seguir trabajando sin interrupción perceptible para el usuario.
Al igual que en un sistema de archivos de un solo disco, los archivos en HDFS se dividen en porciones del tamaño de un bloque , que se almacenan como unidades independientes, esta abstracción de bloque es la que nos permite que un archivo puede ser mayor en capacidad que cualquier unidad de disco de una sola maquina, facilitando el poder almacenar un archivo en múltiples discos de la red de computadores al dividirlo en bloques. Además, los bloques encajan bien con la replicación, proporcionando tolerancia a fallos y alta disponibilidad. En el sistema de archivos HDFS cada bloque se replica en un pequeño número de máquinas separadas físicamente (normalmente tres). Permitiendo que en casos de que un bloque no está disponible sea porque esta corrupto o se daño una maquina o una de sus partes principales , una copia de este bloque se puede leer desde otra ubicación de una manera transparente para el cliente.
HDFS implementa la replicación utilizando el concepto de bloque de disco como se menciono anteriormente, el cual es la cantidad mínima de datos que se pueden leer o escribir en un disco. En este caso el sistema de archivos HDFS tiene un bloque por defecto de 64 MB como unidad de tamaño básico para la partición de un archivo , siendo este muy superior al de los discos. La razón de su gran tamaño es minimizar el costo de búsquedas, ya que este tamaño presenta tiempos de búsqueda de bloque en disco inferior al tiempo de transferencia de bloque desde el disco a la memoria RAM. Para mejorar la velocidad de transferencia de bloque a memoria RAM se debe realizar una disposición de los siguientes bloques del archivo en forma secuencial y no aleatoria en el disco, permitiendo por la secuencia de bloques un flujo continuo o streaming de datos hacia la memoria.
HDFS tiene una característica de los sistemas distribuidos contemporáneos que es la separación de los datos de los metadatos, esto es con el fin de simplificar la administración de almacenamiento, ya que en el caso de HDFS los bloques tiene un tamaño fijo y no almacenan información de los metadatos, lo que facilita el calculo para determinar la capacidad de bloques por unidad de disco, sin tener que preocuparse por el espacio que genera la información de metadatos como los permisos de creación, modificación y tiempos de acceso para los archivos, el árbol de directorios, entre otros, el cual se almacena en maquinas(nodos) separadas de los datos.
Para realizar esta separación de los datos de los metadatos el sistema HDFS tiene dos tipo de nodos operativos que funcionan con un patrón maestro esclavo, el maestro es el NameNodes y el esclavo es el DataNodes:
- El Namenodes gestiona y almacena la información sobre cada archivo o metadatos, como la ubicación de los bloques que componen el archivo en los datanodes, el arból de directorios, los permisos, el nombre del archivo entre varias funciones más, se debe tener en cuenta que los metadatos son modificables y ocupan poca memoria, por consiguiente, se busca que los metadatos siempre estén en la memoria RAM para un rápido acceso y sincronización.
- El datanodes son los caballos de batalla del sistema de archivos HDFS, estos se encargan de almacenar y recuperar bloques, además, periódicamente le informan al namenode las listas de bloques que se están almacenando(sincronización).
En conclusión este sistema de archivo esta en constante desarrollo, con una gran adopción por parte de comunidad BIG DATA, la cual ha echo del HDFS el estándar de facto en las soluciones de grandes volúmenes de información.
Otros Posts:
- El Big Data tiene su propio Hype Cycle de Gartner
- Hadoop y la filosofía en un sistema distribuido
- Big data y el ecosistema Hadoop