Actualizado: 14 de junio de 2024
Colaborador: Jim Holdsworth
El sistema de archivos distribuidos de Hadoop (HDFS) es un sistema de archivos que gestiona grandes conjuntos de datos que pueden ejecutarse en hardware básico. El HDFS es el sistema de almacenamiento de datos más popular para Hadoop y puede utilizarse para escalar un único clúster de Apache Hadoop a cientos e incluso miles de nodos. Dado que gestiona de forma eficiente big data con un alto rendimiento, el HDFS puede utilizarse como canalización de datos y es ideal para soportar análisis de datos complejos.
El HDFS se basa en un marco de código abierto y es uno de los componentes principales de Apache Hadoop, los otros son MapReduce y YARN. El HDFS no debe confundirse ni sustituirse por Apache HBase, que es un sistema de gestión de bases de datos no relacional y orientado a columnas que se asienta sobre el HDFS y puede soportar mejor las necesidades de datos en tiempo real con su motor de procesamiento en memoria.
Conozca los principales beneficios de la IA generativa y cómo las organizaciones pueden impulsar sus negocios.
Regístrese para obtener el libro electrónico sobre almacenes de datos de IA
Dado que una instancia del HDFS puede estar formada por miles de servidores, siempre existe la posibilidad de que falle al menos uno de ellos. El HDFS se ha creado para detectar fallos y recuperarse automáticamente rápidamente. Replicación de datos con varias copias en muchos nodos ayuda a proteger contra la pérdida de datos. El HDFS mantiene al menos una copia en un bastidor diferente de todas las demás copias. Este almacenamiento de datos en un gran clúster entre nodos aumenta la fiabilidad. Además, el HDFS puede tomar instantáneas de almacenamiento para guardar información puntual (PIT).
El HDFS está pensado más para el procesamiento por lotes que para el uso interactivo, por lo que el diseño hace hincapié en las altas tasas de rendimiento de datos, que se adaptan al acceso de streaming a los conjuntos de datos.
El HDFS da cabida a aplicaciones que utilizan conjuntos de datos cuyo tamaño suele oscilar entre gigabytes y terabytes. El HDFS proporciona un gran ancho de banda de datos agregados y puede escalar a cientos de nodos en un único clúster y ayudar a impulsar los sistemas informáticos de alto rendimiento (HPC). Los data lakes suelen almacenarse en HDFS. Los almacenes de datos también han utilizado HDFS, pero ahora con menos frecuencia, debido a la complejidad percibida de la operación.
Dado que los datos se almacenan virtualmente, se pueden reducir los costes de almacenamiento de metadatos del sistema de archivos y de datos del espacio de nombres del sistema de archivos.
Para facilitar la adopción, el HDFS está diseñado para ser portátil en múltiples plataformas de hardware y para ser compatible con varios sistemas operativos subyacentes, incluidos Linux, macOS y Windows. Además, los data lakes de Hadoop son capaces de soportar bases de datos no estructuradas, semiestructuradas y estructuradas, para una máxima flexibilidad. Aunque Hadoop se codifica en Java, otros lenguajes (como C++, Perl, Python y Ruby) permiten su uso en la ciencia de datos.
El HDFS utiliza una arquitectura de clúster para ayudar a ofrecer un alto rendimiento. Para reducir el tráfico de red, el sistema de archivos de Hadoop almacena los datos en DataNodes, donde se realizan los cálculos, en lugar de mover los datos a otra ubicación para el cálculo.
Con funciones de escalabilidad horizontal y vertical, el HDFS se puede ajustar rápidamente para satisfacer las necesidades de datos de una organización. Un clúster puede incluir cientos o miles de nodos.
El HDFS tiene una arquitectura de director/trabajador.
Tanto NameNode como DataNode son software escritos para ejecutarse en una amplia variedad de sistemas operativos (SO), que a menudo es el sistema operativo GNU/Linux. El lenguaje Java se utilizó en la creación del HDFS, lo que significa que cualquier máquina compatible con Java también puede utilizar el software NameNode o DataNode.
Las implementaciones suelen contar con una única máquina especializada que ejecuta el software NameNode. A continuación, cualquier otra máquina del cluster ejecuta una única instancia del software DataNode. Si es necesario, pero sólo se utiliza con poca frecuencia, es posible una configuración de más de un DataNode en una sola máquina.
Cuando los datos se introducen en HDFS, se dividen en bloques y se distribuyen a diferentes nodos de un clúster. Con los datos almacenados en varios DataNodes, los bloques se pueden replicar en otros nodos para permitir el procesamiento paralelo. El sistema de archivos distribuido (DFS) incluye comandos para acceder, recuperar, mover y ver datos rápidamente. Con réplicas de bloques de datos en varios DataNodes, se puede eliminar una copia sin correr el riesgo de dañar los archivos de las otras copias. El tamaño de bloque HDFS por defecto es de 128 MB (Hadoop 2.x), que algunos considerarán grande, pero el tamaño de bloque se hace para minimizar los tiempos de búsqueda y reducir los metadatos necesarios.
Para minimizar el riesgo y acelerar el procesamiento, cuando un DataNode deja de señalar el NameNode, ese DataNode se elimina del clúster y las operaciones continúan sin ese DataNode. Si ese DataNode vuelve a estar operativo más tarde, se asigna a un nuevo clúster.
El HDFS proporciona archivos de acceso flexible a los datos a través de varias interfaces: se proporciona una API Java nativa con HDFS, mientras que un contenedor de lenguaje C está disponible para la API Java, además de que se puede utilizar un navegador HTTP para examinar los archivos de una instancia HDFS.
El HDFS se organiza con una jerarquía de archivos tradicional en la que el usuario puede crear directorios que contengan varios archivos. La jerarquía del espacio de nombres del sistema de archivos es similar a la de los sistemas de archivos tradicionales, en los que el usuario crea y elimina archivos, los mueve de un directorio a otro y puede cambiarles el nombre.
El espacio de nombres del sistema de archivos es mantenido por el NameNode, que mantiene registros de cualquier cambio en el espacio de nombres del sistema de archivos. Aquí se puede especificar el número total de réplicas que se guardarán para cualquier aplicación. Ese número es el factor de replicación para ese archivo. El factor de replicación se puede establecer cuando se crea el archivo y modificarlo posteriormente según sea necesario.
Para proporcionar un almacenamiento fiable, el HDFS almacena archivos grandes en varias ubicaciones en un clúster grande, con cada archivo en una secuencia de bloques. Cada bloque se almacena en un archivo del mismo tamaño, excepto el bloque final, que se rellena a medida que se añaden los datos.
Para mayor protección, los archivos HDFS son de escritura única por un solo escritor en cualquier momento. Para ayudar a garantizar que todos los datos se repliquen según las instrucciones. El NameNode recibe un heartbeat (un informe periódico de estado) y un blockreport (el ID de bloque, el sello de generación y la longitud de cada réplica de bloque) de cada DataNode conectado al clúster. Recibir un heartbeat indica que el DataNode funciona correctamente.
El NameNode selecciona el ID de rack de cada DataNode mediante un proceso llamado Hadoop Rack Awareness para ayudar a evitar la pérdida de datos si falla todo un rack. Esto también permite utilizar el ancho de banda de varios racks al leer los datos.
Considere un archivo que incluye números de teléfono de todo un país. Los números de las personas con un apellido que empieza por A pueden estar almacenados en el servidor 1, B en el servidor 2, etc. Con Hadoop, las partes de esta guía telefónica se almacenarían en un único clúster y, para reconstruir la agenda completa, una aplicación necesitaría los bloques de cada servidor del clúster.
Para ayudar a garantizar una alta disponibilidad en caso de que falle un servidor, el HDFS replica estas piezas más pequeñas en dos servidores más de forma predeterminada. (Esta redundancia se puede aumentar o disminuir por archivo o para todo el entorno. Por ejemplo, un clúster de Hadoop de desarrollo no suele necesitar redundancia de datos).
Esta redundancia también permite al clúster Hadoop dividir el trabajo en partes más pequeñas y ejecutar esos trabajos en todos los servidores del clúster para una mejor escalabilidad. Por último, una organización se beneficia de la localidad de los datos, que es crucial cuando se trabaja con grandes conjuntos de datos.
El HDFS también puede habilitar la inteligencia artificial (IA) y el machine learning (ML) mediante un escalado vertical eficaz. Primero para almacenar datos en cantidades lo suficientemente grandes como para entrenar modelos de ML y luego para acceder a esos enormes conjuntos de datos.
Cualquier organización que capture, almacene y utilice grandes conjuntos de datos (hasta petabytes) podría considerar el uso del HDFS. Algunos casos de uso basados en la industria muestran cómo se podría implementar HDFS.
El origen de Hadoop, según los cofundadores Mike Cafarella y Doug Cutting, fue un artículo sobre el sistema de archivos de Google, publicado en 2003. Le siguió un segundo documento, "MapReduce: Simplified Data Processing on Large Clusters." Se inició el desarrollo de un primer motor de búsqueda llamado Apache Nutch, pero luego el trabajo se trasladó con Doug Cutting a Yahoo en 2006.
Hadoop lleva el nombre de un elefante de juguete perteneciente al hijo de Cutting. (De ahí el logotipo). El código inicial de Hadoop se basaba en gran medida en Nutch, pero superó sus limitaciones de escalabilidad, y contenía las primeras versiones del HDFS y MapReduce.
El conjunto de programas del ecosistema Hadoop sigue creciendo. Además del HDFS, también hay:HBase (una base de datos NoSQL), Mahout, Spark MLlib (bibliotecas de algoritmos para el machine learning), MapReduce (procesamiento de datos basado en la programación), Oozie (planificador de trabajos), PIG y HIVE (servicios de procesamiento de datos basados en consultas), Solar y Lucene (para buscar e indexar), Spark (datos procesamiento, en memoria), YARN (otro negociador de recursos) y Zookeeper (coordinación de clústeres).
El software de código abierto dentro del ecosistema Hadoop ahora está gestionado por la Apache Software Foundation1, una comunidad mundial para desarrolladores de software y colaboradores de software.
watsonx.data ya está disponible: un almacén de datos adaptado construido sobre una arquitectura de lakehouse de datos abierta para escalar cargas de trabajo de IA, para todos sus datos, en cualquier lugar.
IBM y Cloudera se han asociado para ofrecer una distribución de Hadoop de nivel empresarial líder en la industria, que incluye un ecosistema integrado de productos y servicios para respaldar análisis más rápidos a escala.
Están surgiendo al menos tres soluciones diferentes de plataformas de datos. Conozca la relación entre lakehouse de datos, tejido de datos y malla de datos.
Lea esta introducción práctica a la próxima generación de arquitecturas de datos. Presenta el papel de las tecnologías en la nube y NoSQL y analiza los aspectos prácticos de la seguridad, la privacidad y el gobierno.
Presto ofrece a organizaciones de todos los tamaños una forma rápida y eficiente de analizar big data desde diversas fuentes, incluidos los sistemas locales y la nube.
1 Apache software foundation (enlace externo a ibm.com)