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:

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Crear un directorio en HDFS:

    • Usa el comando hdfs dfs -mkdir /user/tu_usuario/ejercicio1.
  2. 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/.
  3. Listar los archivos en el directorio de HDFS:

    • Usa el comando hdfs dfs -ls /user/tu_usuario/ejercicio1/.
  4. Leer el contenido del archivo en HDFS:

    • Usa el comando hdfs dfs -cat /user/tu_usuario/ejercicio1/datos.txt.

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.

© Copyright 2024. Todos los derechos reservados