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:
-
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).
-
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:
- Divisió en Blocs: Les dades es divideixen en blocs de mida fixa (per defecte, 128 MB).
- Contacte amb el Namenode: El client contacta amb el Namenode per obtenir la ubicació dels Datanodes on es poden emmagatzemar els blocs.
- Emmagatzematge en Datanodes: Els blocs es copien en diversos Datanodes per garantir la redundància i la tolerància a fallades.
- 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:
- Contacte amb el Namenode: El client contacta amb el Namenode per obtenir la ubicació dels blocs de dades.
- Lectura de Blocs: El client llegeix els blocs directament dels Datanodes.
- 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:
- Configura l'entorn Hadoop.
- Escriu un programa en Java que escrigui un fitxer de text en HDFS.
- 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:
- Escriu un programa en Java que llegeixi un fitxer de text de HDFS.
- 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.
Curs de Hadoop
Mòdul 1: Introducció a Hadoop
- Què és Hadoop?
- Visió general de l'ecosistema Hadoop
- Hadoop vs Bases de dades tradicionals
- Configuració de l'entorn Hadoop
Mòdul 2: Arquitectura de Hadoop
- Components bàsics de Hadoop
- HDFS (Sistema de fitxers distribuït de Hadoop)
- Marc MapReduce
- YARN (Yet Another Resource Negotiator)
Mòdul 3: HDFS (Sistema de fitxers distribuït de Hadoop)
Mòdul 4: Programació MapReduce
- Introducció a MapReduce
- Flux de treball d'una feina MapReduce
- Escriure un programa MapReduce
- Tècniques d'optimització de MapReduce
Mòdul 5: Eines de l'ecosistema Hadoop
Mòdul 6: Conceptes avançats de Hadoop
- Seguretat de Hadoop
- Gestió de clústers de Hadoop
- Ajust de rendiment de Hadoop
- Serialització de dades de Hadoop
Mòdul 7: Aplicacions reals i estudis de cas
- Hadoop en emmagatzematge de dades
- Hadoop en aprenentatge automàtic
- Hadoop en processament de dades en temps real
- Estudis de cas d'implementacions de Hadoop