Introducción
El Sistema de Archivos Distribuido de Hadoop (HDFS) es uno de los componentes fundamentales del ecosistema Hadoop. Diseñado para almacenar grandes volúmenes de datos de manera distribuida y redundante, HDFS permite el procesamiento eficiente de datos a gran escala. En esta sección, exploraremos la arquitectura de HDFS, sus componentes clave y cómo interactúan entre sí.
Componentes Principales de HDFS
HDFS se compone de varios componentes esenciales que trabajan juntos para proporcionar almacenamiento distribuido y acceso a datos. Los componentes principales son:
-
Namenode:
- Es el maestro del sistema HDFS.
- Gestiona el espacio de nombres del sistema de archivos y regula el acceso a los archivos por parte de los clientes.
- Mantiene la información de metadatos, como la estructura de directorios y los bloques de datos.
-
Datanode:
- Son los trabajadores del sistema HDFS.
- Almacenan los datos reales en bloques.
- Informan periódicamente al Namenode sobre el estado de los bloques que almacenan.
-
Secondary Namenode:
- No es un respaldo del Namenode.
- Ayuda a reducir la carga del Namenode al tomar instantáneas periódicas del espacio de nombres y los registros de transacciones.
-
Client:
- Interactúa con el Namenode y los Datanodes para leer y escribir datos.
- Divide los archivos en bloques y los distribuye a los Datanodes.
Estructura de HDFS
Espacio de Nombres y Bloques de Datos
-
Espacio de Nombres:
- HDFS organiza los archivos en una jerarquía de directorios y archivos, similar a un sistema de archivos tradicional.
- El Namenode mantiene el espacio de nombres y los metadatos asociados.
-
Bloques de Datos:
- Los archivos en HDFS se dividen en bloques de tamaño fijo (por defecto, 128 MB).
- Cada bloque se almacena en múltiples Datanodes para garantizar la redundancia y la tolerancia a fallos.
Replicación de Datos
- Replicación:
- Cada bloque de datos se replica en varios Datanodes (por defecto, tres réplicas).
- La replicación asegura que los datos estén disponibles incluso si uno o más Datanodes fallan.
Comunicación entre Componentes
-
Heartbeat:
- Los Datanodes envían señales de "heartbeat" periódicas al Namenode para indicar que están activos y funcionando correctamente.
- Si el Namenode no recibe un heartbeat de un Datanode dentro de un tiempo específico, lo marca como fallido.
-
Block Report:
- Los Datanodes envían informes de bloques al Namenode, detallando los bloques que almacenan.
- Esto permite al Namenode mantener un registro actualizado de la ubicación de los bloques.
Diagrama de Arquitectura de HDFS
A continuación se presenta un diagrama simplificado de la arquitectura de HDFS:
+-------------------+ +-------------------+ | Client | | Client | +-------------------+ +-------------------+ | | v v +-------------------+ +-------------------+ | Namenode | | Secondary Namenode| +-------------------+ +-------------------+ | v +-------------------+ | Datanode | +-------------------+ | v +-------------------+ | Datanode | +-------------------+ | v +-------------------+ | Datanode | +-------------------+
Ejemplo Práctico: Escribir y Leer Datos en HDFS
Escribir Datos en HDFS
# Crear un directorio en HDFS hdfs dfs -mkdir /user/estudiante # Subir un archivo local a HDFS hdfs dfs -put archivo_local.txt /user/estudiante/
Leer Datos desde HDFS
# Listar archivos en un directorio de HDFS hdfs dfs -ls /user/estudiante/ # Leer el contenido de un archivo en HDFS hdfs dfs -cat /user/estudiante/archivo_local.txt
Ejercicio Práctico
Ejercicio 1: Crear y Manipular Archivos en HDFS
-
Crear un directorio en HDFS:
- Usa el comando
hdfs dfs -mkdir /user/tu_usuario/ejercicio1
.
- Usa el comando
-
Subir un archivo local a HDFS:
- Crea un archivo de texto en tu sistema local llamado
datos.txt
con contenido de tu elección. - Usa el comando
hdfs dfs -put datos.txt /user/tu_usuario/ejercicio1/
.
- Crea un archivo de texto en tu sistema local llamado
-
Listar los archivos en el directorio de HDFS:
- Usa el comando
hdfs dfs -ls /user/tu_usuario/ejercicio1/
.
- Usa el comando
-
Leer el contenido del archivo en HDFS:
- Usa el comando
hdfs dfs -cat /user/tu_usuario/ejercicio1/datos.txt
.
- Usa el comando
Solución
# Paso 1: Crear un directorio en HDFS hdfs dfs -mkdir /user/tu_usuario/ejercicio1 # Paso 2: Subir un archivo local a HDFS hdfs dfs -put datos.txt /user/tu_usuario/ejercicio1/ # Paso 3: Listar los archivos en el directorio de HDFS hdfs dfs -ls /user/tu_usuario/ejercicio1/ # Paso 4: Leer el contenido del archivo en HDFS hdfs dfs -cat /user/tu_usuario/ejercicio1/datos.txt
Conclusión
En esta sección, hemos explorado la arquitectura de HDFS, incluyendo sus componentes principales, la estructura de almacenamiento y la comunicación entre componentes. También hemos visto cómo interactuar con HDFS mediante comandos prácticos. Con este conocimiento, estás preparado para profundizar en los comandos de HDFS y la replicación de datos en las siguientes secciones.
Curso de Hadoop
Módulo 1: Introducción a Hadoop
- ¿Qué es Hadoop?
- Visión General del Ecosistema Hadoop
- Hadoop vs Bases de Datos Tradicionales
- Configuración del Entorno Hadoop
Módulo 2: Arquitectura de Hadoop
- Componentes Principales de Hadoop
- HDFS (Sistema de Archivos Distribuido de Hadoop)
- Marco de Trabajo MapReduce
- YARN (Yet Another Resource Negotiator)
Módulo 3: HDFS (Sistema de Archivos Distribuido de Hadoop)
Módulo 4: Programación MapReduce
- Introducción a MapReduce
- Flujo de Trabajo de un Job MapReduce
- Escribiendo un Programa MapReduce
- Técnicas de Optimización de MapReduce
Módulo 5: Herramientas del Ecosistema Hadoop
Módulo 6: Conceptos Avanzados de Hadoop
- Seguridad en Hadoop
- Gestión de Clústeres Hadoop
- Ajuste de Rendimiento de Hadoop
- Serialización de Datos en Hadoop
Módulo 7: Aplicaciones del Mundo Real y Estudios de Caso
- Hadoop en Almacenamiento de Datos
- Hadoop en Aprendizaje Automático
- Hadoop en Procesamiento de Datos en Tiempo Real
- Estudios de Caso de Implementaciones de Hadoop