Introducció

L'ecosistema Apache Hadoop és una col·lecció de projectes i eines que treballen conjuntament per proporcionar una solució robusta i escalable per al processament i emmagatzematge de grans volums de dades. Hadoop és conegut per la seva capacitat de gestionar dades massives de manera distribuïda i eficient.

Components Principals de l'Ecosistema Hadoop

  1. Hadoop Distributed File System (HDFS)

HDFS és el sistema de fitxers distribuït que permet emmagatzemar grans volums de dades de manera distribuïda a través de múltiples servidors.

Característiques Clau:

  • Alta Disponibilitat: Les dades es repliquen a través de diversos nodes.
  • Escalabilitat: Pot gestionar petabytes de dades.
  • Tolerància a Fallades: Dissenyat per resistir fallades de nodes.

  1. MapReduce

MapReduce és el model de programació per al processament de dades distribuïdes a gran escala.

Funcionament:

  • Map: Divideix la tasca en sub-tasques més petites.
  • Reduce: Agrega els resultats de les sub-tasques per obtenir el resultat final.

Exemple de Codi MapReduce:

public class WordCount {
    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private final static IntWritable one = new IntWritable(1);
        private Text word = new Text();

        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString());
            while (itr.hasMoreTokens()) {
                word.set(itr.nextToken());
                context.write(word, one);
            }
        }
    }

    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            result.set(sum);
            context.write(key, result);
        }
    }
}

Explicació:

  • TokenizerMapper: Divideix el text en paraules i emet un parell (clau, valor) per a cada paraula.
  • IntSumReducer: Agrega els valors per a cada clau (paraula) per obtenir el recompte total.

  1. YARN (Yet Another Resource Negotiator)

YARN és el gestor de recursos de Hadoop que permet gestionar i programar les aplicacions en un clúster.

Funcions Principals:

  • Gestió de Recursos: Assigna recursos a les aplicacions.
  • Planificació de Tasques: Programa les tasques en funció dels recursos disponibles.

  1. Hadoop Common

Hadoop Common proporciona les biblioteques i utilitats necessàries per a altres mòduls de Hadoop.

Inclou:

  • APIs: Per a la interacció amb HDFS i MapReduce.
  • Utilitats: Eines per a la configuració i gestió del clúster.

Eines Complementàries de l'Ecosistema Hadoop

  1. Apache Hive

Hive és una eina de data warehousing que permet realitzar consultes SQL sobre dades emmagatzemades en HDFS.

Característiques:

  • HQL (Hive Query Language): Llenguatge similar a SQL.
  • Integració amb Hadoop: Executa les consultes utilitzant MapReduce.

  1. Apache Pig

Pig és una plataforma per a l'anàlisi de grans conjunts de dades que proporciona un llenguatge de script d'alt nivell anomenat Pig Latin.

Característiques:

  • Facilitat d'Ús: Simplifica el desenvolupament de tasques de processament de dades.
  • Flexibilitat: Pot processar dades estructurades i no estructurades.

  1. Apache HBase

HBase és una base de dades NoSQL distribuïda que proporciona emmagatzematge en temps real per a grans volums de dades.

Característiques:

  • Model de Dades: Basat en taules, files i columnes.
  • Escalabilitat: Pot gestionar milers de milions de files i milions de columnes.

  1. Apache ZooKeeper

ZooKeeper és un servei de coordinació per a aplicacions distribuïdes que proporciona mecanismes per a la sincronització, configuració i gestió de grups.

Característiques:

  • Alta Disponibilitat: Dissenyat per ser altament disponible.
  • Consistència: Garanteix la consistència de les dades a través dels nodes.

Exercicis Pràctics

Exercici 1: Configuració d'un Clúster Hadoop

Objectiu: Configurar un clúster Hadoop amb HDFS i YARN.

Passos:

  1. Instal·lació de Hadoop: Descarrega i instal·la Hadoop en tots els nodes del clúster.
  2. Configuració de HDFS: Configura el fitxer hdfs-site.xml per definir els directoris de dades i el nombre de rèpliques.
  3. Configuració de YARN: Configura el fitxer yarn-site.xml per definir els recursos disponibles per a YARN.
  4. Inici del Clúster: Inicia els serveis HDFS i YARN.

Exercici 2: Executar una Aplicació MapReduce

Objectiu: Escriure i executar una aplicació MapReduce per comptar paraules en un fitxer de text.

Passos:

  1. Escriure el Codi: Escriu el codi Java per a l'aplicació MapReduce (com l'exemple anterior).
  2. Compilar i Paquetar: Compila el codi i crea un fitxer JAR.
  3. Executar l'Aplicació: Executa l'aplicació MapReduce utilitzant el comandament hadoop jar.

Solució:

hadoop jar wordcount.jar WordCount input output

Conclusió

L'ecosistema Apache Hadoop proporciona una solució completa per al processament i emmagatzematge de grans volums de dades. Amb components com HDFS, MapReduce, YARN i eines complementàries com Hive, Pig, HBase i ZooKeeper, Hadoop és capaç de gestionar dades massives de manera eficient i escalable. Els exercicis pràctics proporcionen una oportunitat per aplicar els conceptes apresos i adquirir experiència pràctica amb Hadoop.

© Copyright 2024. Tots els drets reservats