Introducció

L'ecosistema Hadoop és un conjunt de projectes i eines que treballen conjuntament per proporcionar una solució robusta i escalable per al processament i l'emmagatzematge de grans volums de dades. Aquest ecosistema inclou components bàsics com HDFS i MapReduce, així com una varietat d'eines i biblioteques que faciliten diferents aspectes del treball amb dades massives.

Components Principals de l'Ecosistema Hadoop

  1. HDFS (Hadoop Distributed File System)

  • Funció: Emmagatzematge distribuït de dades.
  • Característiques: Alta tolerància a fallades, escalabilitat, i capacitat per gestionar fitxers molt grans.
  • Exemple:
    HDFS divideix un fitxer gran en blocs i els distribueix a través de múltiples nodes en un clúster.
    

  1. MapReduce

  • Funció: Model de programació per al processament de dades.
  • Característiques: Processament paral·lel, escalabilitat, i maneig eficient de grans volums de dades.
  • Exemple:
    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> {
            public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
                int sum = 0;
                for (IntWritable val : values) {
                    sum += val.get();
                }
                context.write(key, new IntWritable(sum));
            }
        }
    }
    

  1. YARN (Yet Another Resource Negotiator)

  • Funció: Gestió de recursos i planificació de tasques.
  • Característiques: Permet l'execució de múltiples aplicacions en un clúster Hadoop.
  • Exemple:
    YARN gestiona els recursos del clúster i assigna recursos a les aplicacions segons les necessitats.
    

Eines de l'Ecosistema Hadoop

  1. Apache Pig

  • Funció: Plataforma per analitzar grans conjunts de dades.
  • Característiques: Llenguatge de script d'alt nivell (Pig Latin) per processar dades.
  • Exemple:
    raw_data = LOAD 'data.txt' USING PigStorage(',') AS (name:chararray, age:int, gpa:float);
    grouped_data = GROUP raw_data BY age;
    average_gpa = FOREACH grouped_data GENERATE group, AVG(raw_data.gpa);
    STORE average_gpa INTO 'output.txt';
    

  1. Apache Hive

  • Funció: Data warehouse per Hadoop.
  • Característiques: Llenguatge de consulta similar a SQL (HiveQL) per gestionar i analitzar dades.
  • Exemple:
    CREATE TABLE students (name STRING, age INT, gpa FLOAT);
    LOAD DATA INPATH 'data.txt' INTO TABLE students;
    SELECT age, AVG(gpa) FROM students GROUP BY age;
    

  1. Apache HBase

  • Funció: Base de dades NoSQL distribuïda.
  • Característiques: Emmagatzematge de dades en temps real, escalabilitat horitzontal.
  • Exemple:
    Configuration config = HBaseConfiguration.create();
    HTable table = new HTable(config, "students");
    Put p = new Put(Bytes.toBytes("row1"));
    p.add(Bytes.toBytes("personal"), Bytes.toBytes("name"), Bytes.toBytes("John Doe"));
    p.add(Bytes.toBytes("personal"), Bytes.toBytes("age"), Bytes.toBytes(25));
    table.put(p);
    

  1. Apache Sqoop

  • Funció: Transferència de dades entre Hadoop i bases de dades relacionals.
  • Característiques: Importació i exportació eficient de dades.
  • Exemple:
    sqoop import --connect jdbc:mysql://localhost/test --username root --table students --target-dir /user/hadoop/students
    

  1. Apache Flume

  • Funció: Recollida, agregació i moviment de grans volums de dades de registre.
  • Característiques: Alta disponibilitat, escalabilitat.
  • Exemple:
    agent.sources = source1
    agent.sinks = sink1
    agent.channels = channel1
    
    agent.sources.source1.type = exec
    agent.sources.source1.command = tail -F /var/log/syslog
    agent.sinks.sink1.type = hdfs
    agent.sinks.sink1.hdfs.path = hdfs://localhost:9000/logs/
    agent.channels.channel1.type = memory
    

  1. Apache Oozie

  • Funció: Coordinació i gestió de fluxos de treball.
  • Característiques: Planificació de tasques, integració amb MapReduce, Pig, Hive, etc.
  • Exemple:
    <workflow-app name="example-wf" xmlns="uri:oozie:workflow:0.5">
        <start to="first-node"/>
        <action name="first-node">
            <map-reduce>
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <configuration>
                    <property>
                        <name>mapred.mapper.class</name>
                        <value>org.apache.hadoop.examples.SleepJob</value>
                    </property>
                </configuration>
            </map-reduce>
            <ok to="end"/>
            <error to="fail"/>
        </action>
        <kill name="fail">
            <message>Workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <end name="end"/>
    </workflow-app>
    

Conclusió

L'ecosistema Hadoop és una col·lecció poderosa i flexible d'eines que permeten gestionar i processar grans volums de dades de manera eficient. Comprendre els components principals i les eines associades és essencial per aprofitar al màxim les capacitats de Hadoop. En els següents mòduls, aprofundirem en cadascun d'aquests components i eines per proporcionar una comprensió més detallada i pràctica del seu ús.

© Copyright 2024. Tots els drets reservats