La Magie des Données de Xara

HadoopHadoopBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans le royaume magique du désert de Xara, le sage et bienveillant roi Amir cherchait à exploiter le pouvoir des vastes ressources de données dispersées dans son royaume. Il a convoqué ses plus expérimentés magiciennes et magiciennes des données pour concevoir un système capable de collecter, de traiter et d'analyser les données du royaume, dégageant des informations pour aider à la prise de décision et à la prospérité de tous.

L'objectif était de créer une plateforme de données robuste et scalable qui pourrait s'intégrer au système de fichiers distribué Hadoop (HDFS) et exploiter le pouvoir de MapReduce pour un traitement de données efficace. Cette plateforme permettrait au royaume d'analyser les données issues de diverses sources, telles que les registres commerciaux, les rendements agricoles et les informations de recensement, donnant au roi Amir les moyens de prendre des décisions éclairées pour le bien-être de ses sujets.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHDFSGroup(["Hadoop HDFS"]) hadoop(("Hadoop")) -.-> hadoop/HadoopMapReduceGroup(["Hadoop MapReduce"]) hadoop(("Hadoop")) -.-> hadoop/HadoopYARNGroup(["Hadoop YARN"]) hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHDFSGroup -.-> hadoop/hdfs_setup("HDFS Setup") hadoop/HadoopHDFSGroup -.-> hadoop/fs_ls("FS Shell ls") hadoop/HadoopHDFSGroup -.-> hadoop/fs_mkdir("FS Shell mkdir") hadoop/HadoopHDFSGroup -.-> hadoop/fs_put("FS Shell copyToLocal/put") hadoop/HadoopMapReduceGroup -.-> hadoop/mappers_reducers("Coding Mappers and Reducers") hadoop/HadoopYARNGroup -.-> hadoop/yarn_jar("Yarn Commands jar") hadoop/HadoopHiveGroup -.-> hadoop/process("Process Control Function") subgraph Lab Skills hadoop/hdfs_setup -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/fs_ls -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/fs_mkdir -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/fs_put -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/mappers_reducers -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/yarn_jar -.-> lab-288981{{"La Magie des Données de Xara"}} hadoop/process -.-> lab-288981{{"La Magie des Données de Xara"}} end

Explorer l'écosystème Hadoop

Dans cette étape, vous allez vous familiariser avec l'écosystème Hadoop et ses composants clés : HDFS et MapReduce.

Hadoop est un framework open source pour le stockage et le traitement distribué de grands ensembles de données sur des grappes de matériel standard. Il est composé de deux principaux composants :

  1. Hadoop Distributed File System (HDFS): Un système de fichiers distribué conçu pour stocker de grands fichiers sur plusieurs machines, offrant une tolérance aux pannes et un accès à haut débit aux données.

  2. MapReduce: Un modèle de programmation et un framework logiciel pour écrire des applications qui traitent de grandes quantités de données en parallèle sur une grappe de machines.

Pour explorer l'écosystème Hadoop, vous pouvez utiliser les commandes suivantes dans votre terminal :

Tout d'abord, assurez-vous d'être connecté en tant qu'utilisateur hadoop en exécutant la commande suivante dans le terminal :

su - hadoop

Liste les dossiers et les fichiers dans HDFS :

hdfs dfs -ls /

Crée un nouveau dossier dans HDFS :

hdfs dfs -mkdir -p /home/hadoop/input

Copie un fichier local vers HDFS :

hdfs dfs -put /home/hadoop/local/file.txt /home/hadoop/input

Ces commandes montrent comment interagir avec HDFS, en listant son contenu, en créant des dossiers et en copiant des fichiers à partir de votre système de fichiers local.

La commande hdfs dfs est utilisée pour interagir avec le Hadoop Distributed File System (HDFS). L'option -ls liste le contenu d'un dossier dans HDFS, tandis que -mkdir crée un nouveau dossier. L'option -put copie un fichier local vers HDFS.

Exécuter un travail MapReduce

Dans cette étape, vous allez apprendre à exécuter un travail MapReduce sur les données stockées dans HDFS, en exploitant le pouvoir du traitement parallèle pour analyser efficacement de grands ensembles de données.

MapReduce est un modèle de programmation pour traiter de grands ensembles de données en parallèle sur une grappe de machines. Il est composé de deux phases principales :

  1. Map : Les données d'entrée sont divisées en morceaux plus petits, et chaque morceau est traité par une tâche séparée appelée "mappeur". Le mappeur traite les données et émet des paires clé-valeur.

  2. Reduce : La sortie des mappeurs est triée et regroupée par clé, et chaque groupe est traité par une tâche séparée appelée "réducteur". Le réducteur combine les valeurs associées à chaque clé et produit le résultat final.

Exécutons un simple travail MapReduce qui compte les occurrences de mots dans un fichier texte. Tout d'abord, créez un fichier Java nommé WordCount.java avec le contenu suivant :

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

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);
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(TokenizerMapper.class);
        job.setCombinerClass(IntSumReducer.class);
        job.setReducerClass(IntSumReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true)? 0 : 1);
    }
}

Ensuite, compilez le fichier Java :

mkdir ~/wordcount
javac -source 8 -target 8 -classpath $(hadoop classpath) -d ~/wordcount WordCount.java
jar -cvf ~/wordcount.jar -C ~/wordcount.

Enfin, exécutez le travail MapReduce :

hadoop jar ~/wordcount.jar WordCount /home/hadoop/input/file.txt /home/hadoop/output

La classe WordCount définit un travail MapReduce qui compte les occurrences de mots dans un fichier texte. La classe TokenizerMapper découpe chaque ligne de texte d'entrée et émet des paires clé-valeur (mot, 1). La classe IntSumReducer additionne les valeurs (comptes) pour chaque mot et émet les paires finales (mot, compte).

Le fichier Java est compilé et emballé dans un fichier JAR, qui est ensuite exécuté à l'aide de la commande hadoop jar. Le chemin du fichier d'entrée (/home/hadoop/input/file.txt) et le chemin du répertoire de sortie (/home/hadoop/output) sont fournis en tant qu'arguments.

Sommaire

Dans ce laboratoire, vous avez entrepris un voyage vers le royaume magique du désert de Xara, où vous avez aidé le roi Amir à exploiter le pouvoir de l'écosystème Hadoop pour traiter et analyser les données du royaume. Vous avez exploré les composants clés d'Hadoop, y compris HDFS pour le stockage distribué et MapReduce pour le traitement parallèle de données.

Par des étapes pratiques, vous avez appris à interagir avec HDFS, à créer des dossiers et à télécharger des fichiers. Vous avez également acquis de l'expérience en exécutant un travail MapReduce, plus précisément une application de comptage de mots, qui a démontré les capacités de traitement parallèle d'Hadoop.

En complétant ce laboratoire, vous avez acquis des compétences précieuses en intégrant Hadoop avec HDFS et MapReduce, vous dotant des connaissances nécessaires pour affronter les défis du big data dans le monde réel. Cette expérience contribuera sans aucun doute à votre croissance en tant que magicien des données, vous donnant les moyens de dégager des informations et de diriger la prise de décision dans divers domaines.