¿Qué es Hadoop Distributed File System (HDFS)?
Explore las soluciones de datos en la nube de IBM Regístrese para recibir actualizaciones sobre IA
Ilustración con collage de pictogramas de nubes y un gráfico circular

Fecha de actualización: 14 junio de 2024
Colaborador: Jim Holdsworth

¿Qué es HDFS?

Hadoop Distributed File System (HDFS) es un sistema de archivos que gestiona grandes conjuntos de datos que pueden ejecutarse en hardware básico. HDFS es el sistema de almacenamiento de datos más popular para Hadoop y se puede emplear para escalar un único clúster de Apache Hadoop a cientos e incluso miles de nodos. Debido a que gestiona big data de manera eficiente con un alto rendimiento, HDFS se puede emplear como canalización de datos y es ideal para admitir análisis de datos complejos.

HDFS se basa en un marco de código abierto y es uno de los principales componentes de Apache Hadoop, los otros son MapReduce y YARN. HDFS no debe confundirse ni reemplazarse por Apache HBase, que es un sistema de gestión de bases de datos no relacional y orientado a columnas que se asienta sobre HDFS y puede satisfacer mejor las necesidades de datos en tiempo real con su motor de procesamiento en memoria.

IA generativa y aprendizaje automático (ML) para empresas

Conozca los principales beneficios de la IA generativa y cómo las organizaciones pueden impulsar su negocio.

Contenido relacionado Regístrese para obtener el libro electrónico sobre almacenes de datos de IA
Beneficios de HDFS
Tolerancia a fallas y recuperación rápida de fallas de hardware

Dado que una instancia de HDFS puede constar de miles de servidores, siempre es posible que se produzca un error en al menos un servidor. HDFS se creó para detectar fallas y recuperarse automáticamente con rapidez. La replicación de datos con múltiples copias en muchos nodos ayuda a proteger contra la pérdida de datos. HDFS mantiene al menos una copia en un rack diferente de todas las demás copias. Este almacenamiento de datos en un clúster grande entre nodos aumenta la confiabilidad. Además, HDFS puede tomar instantáneas de almacenamiento para almacenar información de un punto en el tiempo (PIT).

Acceso a datos de transmisión

HDFS está pensado más para el procesamiento por lotes que para el uso interactivo, por lo que el énfasis en el diseño es para las altas tasas de rendimiento de datos, que permiten el acceso de streaming a los conjuntos de datos.

Alojamiento de grandes conjuntos de datos

HDFS se adapta a aplicaciones que emplean conjuntos de datos que suelen tener un tamaño de gigabytes a terabytes. HDFS proporciona un alto ancho de banda de datos agregados y puede escalar a cientos de nodos en un solo clúster y ayudar a impulsar sistemas informáticos de alto rendimiento (HPC). Los lagos de datos a menudo se almacenan en HDFS. Los almacenes de datos también han empleado HDFS, pero ahora con menos frecuencia, debido a la complejidad percibida de la operación.

Eficiencia de costos

Debido a que los datos se almacenan virtualmente, se pueden reducir los costos de metadatos del sistema de archivos y el almacenamiento de datos del espacio de nombres del sistema de archivos.

Portabilidad

Para facilitar la adopción, 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 lagos de datos de Hadoop pueden admitir bases de datos no estructuradas, semiestructuradas y estructuradas, para lograr la máxima flexibilidad. Si bien Hadoop está codificado en Java, otros lenguajes (como C++, Perl, Python y Ruby) permiten su uso en la ciencia de datos.

Velocidad de procesamiento

HDFS emplea 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. 

Escalabilidad

Con características de escalabilidad tanto horizontal como vertical, 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.

La arquitectura de HDFS y cómo funciona

HDFS tiene una arquitectura de maestro/esclavo.

  • Un clúster HDFS incluye un NameNode, que es el servidor maestro. NameNode rastrea el estado de todos los archivos, las licencias de los archivos y la ubicación de cada bloque. El software NameNode gestiona el espacio de nombres del sistema de archivos que, a su vez, rastrea y controla el acceso de los clientes a los archivos y realiza operaciones, como abrir, cerrar y cambiar el nombre de directorios y archivos.

    El espacio de nombres del sistema de archivos también divide los archivos en bloques y asigna los bloques a DataNodes, que es la parte  esclavo del sistema. Al configurar con un solo NameNode por clúster, la arquitectura del sistema simplifica la gestión de datos y el almacenamiento de los metadatos de HDFS. Además, se incorpora una mayor seguridad al evitar que los datos del usuario fluyan a través de NameNode.

  • La mayoría de las veces hay un DataNode por nodo en un clúster que gestiona el almacenamiento de datos dentro del nodo. El software de DataNode gestiona la creación, eliminación y replicación de bloques, además de las solicitudes de lectura y escritura. Cada DataNode almacena por separado los datos de HDFS en su sistema de archivos local con cada bloque como un archivo independiente. Los DataNodes son los nodos esclavos (o demonios Hadoop, que ejecutan procesos en segundo plano) y pueden ejecutarse en hardware básico si una organización quiere economizar.

Tanto NameNode como DataNode son software escrito para ejecutarse en una amplia variedad de sistemas operativos (OS), que a menudo es el sistema operativo GNU/Linux. El lenguaje Java se utilizó en la construcción de HDFS, lo que significa que cualquier máquina que admita Java también puede usar el software NameNode o DataNode.

Los despliegues a menudo tendrán una única máquina dedicada que ejecuta el software NameNode. Luego, cualquier otra máquina del clúster ejecuta una única instancia del software DataNode. Si es necesario, pero solo se usa con poca frecuencia, es posible configurar 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 los distintos nodos de un clúster. Con los datos almacenados en varios DataNodes, los bloques pueden replicarse en otros nodos para permitir el procesamiento en paralelo. El sistema de archivos distribuido (DFS) incluye comandos para acceder, recuperar, mover y visualizar datos rápidamente. Con las réplicas de bloques de datos en varios DataNodes, se puede eliminar una copia sin correr el riesgo de que se dañen los archivos de las demás copias. El tamaño de bloque de HDFS por defecto es de 128 MB (Hadoop 2.x), que algunos considerarán grande, pero el tamaño de bloque es 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.

HDFS proporciona archivos de acceso a datos flexible a través de varias interfaces: se proporciona una API de Java nativa con HDFS, mientras que un contenedor de lenguaje C está disponible para la API de Java, además de que se puede usar un navegador HTTP para explorar los archivos de una instancia de HDFS. 

El espacio de nombres del sistema de archivos

HDFS está organizado 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, donde el usuario crea y elimina archivos, los mueve entre directorios y puede cambiar el nombre de los archivos.

El espacio de nombres del sistema de archivos es mantenido por 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 almacenará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 posteriormente se puede modificar según sea necesario.

Data Replication

Para proporcionar un almacenamiento confiable, 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 llena a medida que se agregan 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. NameNode recibe un latido (un reporte de estado periódico) y un reporte de bloque (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 latido indica que DataNode está funcionando correctamente.

El NameNode selecciona el Id. de rack para cada DataNode empleando un proceso llamado Hadoop Rack Awareness a fin de ayudar a prevenir la pérdida de datos si un rack completo falla. Esto también permite emplear el ancho de banda de varios racks al leer los datos.

Ejemplo y casos de uso de HDFS

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 comienza con A pueden almacenarse en el servidor 1, B en el servidor 2 y así sucesivamente. Con Hadoop, partes de este directorio telefónico se almacenarían en un solo clúster, y para reconstruir toda la guía telefónica, una aplicación necesitaría los bloques de cada servidor del clúster.

Para ayudar a garantizar una alta disponibilidad en caso de que un servidor falle, 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 normalmente no necesita ninguna redundancia de datos).

Esta redundancia también permite que el clúster de Hadoop divida el trabajo en partes más pequeñas y ejecute esos trabajos en todos los servidores del clúster para una mejor escalabilidad. Finalmente, una organización obtiene el beneficio de la localidad de los datos, que es fundamental cuando se trabaja con grandes conjuntos de datos.

HDFS también puede habilitar la inteligencia artificial (IA) y el aprendizaje automático (ML) mediante un escalado vertical eficaz. Primero para almacenar datos en cantidades lo suficientemente grandes como para entrenar modelos de aprendizaje automático y luego para acceder a esos enormes conjuntos de datos.

Cualquier organización que capture, almacene y emplee grandes conjuntos de datos (hasta petabytes) podría considerar el uso de HDFS. Algunos casos de uso por industria muestran cómo se podría implementar HDFS.

  • Energía: Al emplear unidades de medición fasorial (PMU) para monitorear el rendimiento de las redes inteligentes en sus redes de transmisión, una empresa eléctrica puede acumular enormes volúmenes de datos, con miles de registros por segundo. HDFS podría ser el sistema de archivos necesario, rentable y de alta disponibilidad en el que pueden confiar.

  • Atención médica: El volumen de registros médicos aumenta cada día. Los datos de equipos médicos y sensores de pacientes se pueden recopilar y almacenar de manera eficiente para un tratamiento e investigación más receptivos.

  • Marketing: Los datos de los sistemas de gestión de las relaciones con los clientes (CRM), los sistemas de punto de venta (PoS), las respuestas a las campañas y en redes sociales (muchas de ellas no estructuradas) se deben recopilar para analizarlos y orientar las futuras iniciativas de marketing. Los clústeres de HDFS podrían ofrecer una solución económica para almacenar y analizar las grandes cantidades de datos generados.

  • Petróleo y gas: Un clúster de HDFS puede ayudar a unificar todos los datos que llegan en varios formatos para que estén disponibles para el análisis de big data. Esto puede incluir todo, desde modelos terrestres en 3D hasta videos, compras de clientes o datos de sensores de equipos.

  • Ventas minoristas:  Para comprender mejor a sus clientes, los minoristas pueden reunir y analizar datos de diversas fuentes. Esto incluye registros de ventas, interacciones de atención al cliente y redes sociales (tanto datos estructurados como no estructurados) para desarrollar nuevas estrategias de participación.

  • Telecomunicaciones: HDFS puede ayudar a las empresas de telecomunicaciones a construir rutas de red sólidas, realizar mantenimiento predictivo, indicar opciones prometedoras de expansión de red y analizar el comportamiento de los clientes.
La historia de HDFS

El origen de Hadoop, según los cofundadores Mike Cafarella y Doug Cutting, fue un artículo de Google File System, publicado en 2003. Siguió un segundo artículo, “MapReduce: Simplified Data Processing on Large Clusters”. Se inició el desarrollo de un motor de búsqueda inicial 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 que pertenecía al hijo de Cutting (de ahí el logotipo). El código inicial de Hadoop se basaba en gran medida en Nutch (pero superaba sus limitaciones de escalabilidad) y contenía las primeras versiones de HDFS y MapReduce.

El conjunto de programas del ecosistema Hadoop sigue creciendo. Además de HDFS, también existe:HBase (una base de datos NoSQL), Mahout, Spark MLLib (bibliotecas de algoritmos para aprendizaje automático), MapReduce (procesamiento de datos basado en programación), Oozie (programador de trabajos), PIG y HIVE (servicios de procesamiento de datos basados en consultas), Solar y Lucene (para búsqueda e indexación), Spark (procesamiento de datos, en memoria), YARN (Yet Another Resource Negotiator) y Zookeeper (coordinación de clústeres).

El software de código abierto dentro del ecosistema Hadoop ahora es gestionado por Apache Software Foundation1 , una comunidad mundial para desarrolladores de software y colaboradores de software.

 

Soluciones relacionadas
Un almacén de datos abierto, híbrido y gobernado

watsonx.data ya está disponible: un almacén de datos que se ajusta a sus necesidades, diseñado sobre una arquitectura de lakehouse de datos abierta que le permite escalar las cargas de trabajo de IA, para todos sus datos, en cualquier lugar.

Explore watsonx.data
Genere analytics mejores y más rápidos con las soluciones de big data de IBM

IBM y Cloudera se asociaron 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 admitir analytics más rápidos a escala.

Explorar las oportunidades de big data con IBM
Recursos La trinidad de las plataformas de datos: ¿competitivas o complementarias?

Están surgiendo al menos tres soluciones diferentes de plataforma de datos. Conozca la relación entre el lakehouse de datos, el tejido de datos y la malla de datos.

Comprender el big data más allá del revuelo

Lea esta introducción práctica a la próxima generación de arquitecturas de datos. Presenta la función de la nube y las tecnologías NoSQL, y analiza los aspectos prácticos de la seguridad, la privacidad y la gobernanza.

¿Qué es Presto?

Presto ofrece a organizaciones de todos los tamaños una manera rápida y eficiente de analizar big data de diversas fuentes, incluidos los sistemas on-premise y la nube.

Dé el siguiente paso

Escale cargas de trabajo de IA para todos sus datos, en cualquier lugar, con IBM watsonx.data, un almacén de datos adecuado para su propósito creado sobre una arquitectura de lakehouse de datos abierta.

Explore watsonx.data Reserve una demostración en vivo
Notas de pie de página

1 Apache software foundation (enlace externo a ibm.com)