Introducció

El Sistema de Fitxers Distribuït de Hadoop (HDFS) és un component clau de l'ecosistema Hadoop. Està dissenyat per emmagatzemar grans volums de dades de manera fiable i per proporcionar un accés ràpid a aquestes dades. En aquesta secció, explorarem l'arquitectura de HDFS, incloent els seus components principals, el funcionament intern i les seves característiques clau.

Components Principals de HDFS

HDFS està format per dos components principals:

  1. Namenode:

    • És el mestre del clúster HDFS.
    • Gestiona el sistema de fitxers i manté la informació de la ubicació dels blocs de dades.
    • No emmagatzema les dades pròpiament dites, sinó les metadades (informació sobre els fitxers i els blocs).
  2. Datanodes:

    • Són els treballadors del clúster HDFS.
    • Emmagatzemen les dades reals en blocs.
    • Informen periòdicament al Namenode sobre l'estat dels blocs que emmagatzemen.

Funcionament Intern de HDFS

Escriptura de Dades en HDFS

Quan un client vol escriure dades en HDFS, el procés segueix aquests passos:

  1. Divisió en Blocs: Les dades es divideixen en blocs de mida fixa (per defecte, 128 MB).
  2. Contacte amb el Namenode: El client contacta amb el Namenode per obtenir la ubicació dels Datanodes on es poden emmagatzemar els blocs.
  3. Emmagatzematge en Datanodes: Els blocs es copien en diversos Datanodes per garantir la redundància i la tolerància a fallades.
  4. Actualització de Metadades: El Namenode actualitza les metadades per reflectir la ubicació dels blocs.

Lectura de Dades en HDFS

Quan un client vol llegir dades de HDFS, el procés és el següent:

  1. Contacte amb el Namenode: El client contacta amb el Namenode per obtenir la ubicació dels blocs de dades.
  2. Lectura de Blocs: El client llegeix els blocs directament dels Datanodes.
  3. Recomposició de Dades: Els blocs es recomponen per formar el fitxer original.

Característiques Clau de HDFS

Replicació de Dades

HDFS replica els blocs de dades en diversos Datanodes per garantir la disponibilitat i la tolerància a fallades. El nombre de rèpliques es pot configurar (per defecte, 3 rèpliques).

Tolerància a Fallades

HDFS està dissenyat per ser tolerant a fallades. Si un Datanode falla, les dades es poden recuperar de les rèpliques emmagatzemades en altres Datanodes.

Escalabilitat

HDFS pot escalar horitzontalment afegint més Datanodes al clúster. Això permet emmagatzemar i processar grans volums de dades.

Alta Disponibilitat

Per garantir l'alta disponibilitat, HDFS pot tenir un Namenode secundari (Standby Namenode) que pren el relleu en cas de fallada del Namenode principal.

Exemples Pràctics

Exemple 1: Escriptura de Dades en HDFS

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.OutputStream;

public class HDFSWriteExample {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(conf);
        Path path = new Path("/user/hadoop/example.txt");
        OutputStream os = fs.create(path);
        os.write("Hello, HDFS!".getBytes());
        os.close();
        fs.close();
    }
}

Exemple 2: Lectura de Dades de HDFS

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class HDFSReadExample {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(conf);
        Path path = new Path("/user/hadoop/example.txt");
        InputStream is = fs.open(path);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
        fs.close();
    }
}

Exercicis Pràctics

Exercici 1: Escriure un Fitxer en HDFS

Objectiu: Escriure un fitxer de text en HDFS.

Instruccions:

  1. Configura l'entorn Hadoop.
  2. Escriu un programa en Java que escrigui un fitxer de text en HDFS.
  3. Verifica que el fitxer s'ha escrit correctament utilitzant les comandes de HDFS.

Solució: Segueix l'exemple proporcionat anteriorment per escriure un fitxer en HDFS.

Exercici 2: Llegir un Fitxer de HDFS

Objectiu: Llegir un fitxer de text de HDFS.

Instruccions:

  1. Escriu un programa en Java que llegeixi un fitxer de text de HDFS.
  2. Verifica que el contingut del fitxer es llegeix correctament.

Solució: Segueix l'exemple proporcionat anteriorment per llegir un fitxer de HDFS.

Resum

En aquesta secció, hem explorat l'arquitectura de HDFS, incloent els seus components principals (Namenode i Datanodes), el funcionament intern (escriptura i lectura de dades) i les seves característiques clau (replicació de dades, tolerància a fallades, escalabilitat i alta disponibilitat). També hem proporcionat exemples pràctics i exercicis per reforçar els conceptes apresos. En la següent secció, aprofundirem en les comandes de HDFS per gestionar fitxers i directoris.

© Copyright 2024. Tots els drets reservats