Maison  >  Article  >  Java  >  Développement Java : comment gérer le calcul distribué de données à grande échelle

Développement Java : comment gérer le calcul distribué de données à grande échelle

PHPz
PHPzoriginal
2023-09-21 14:55:44548parcourir

Développement Java : comment gérer le calcul distribué de données à grande échelle

Développement Java : Comment traiter le calcul distribué de données à grande échelle, des exemples de code spécifiques sont nécessaires

Avec l'avènement de l'ère du big data, la demande de traitement de données à grande échelle augmente également. Dans un environnement informatique autonome traditionnel, il est difficile de répondre à cette demande. Par conséquent, l’informatique distribuée est devenue un moyen important de traitement du Big Data. Java, en tant que langage de programmation populaire, joue un rôle important dans l’informatique distribuée.

Dans cet article, nous présenterons comment utiliser Java pour le calcul distribué de données à grande échelle et fournirons des exemples de code spécifiques. Tout d’abord, nous devons créer un environnement informatique distribué basé sur Hadoop. Ensuite, nous montrerons comment gérer le calcul distribué de données à grande échelle à travers un exemple simple de WordCount.

  1. Créer un environnement informatique distribué (basé sur Hadoop)

Pour mettre en œuvre l'informatique distribuée, vous devez d'abord créer un environnement informatique distribué. Ici, nous choisissons d'utiliser Hadoop, un framework informatique distribué open source largement utilisé.

Tout d’abord, nous devons télécharger et installer Hadoop. La dernière version peut être obtenue sur le site officiel de Hadoop (https://hadoop.apache.org/). Après le téléchargement, suivez les instructions de la documentation officielle pour installer et configurer.

Une fois l'installation terminée, nous devons démarrer le cluster Hadoop. Ouvrez le terminal de ligne de commande, accédez au répertoire sbin du répertoire d'installation Hadoop et exécutez la commande suivante pour démarrer le cluster Hadoop :

./start-dfs.sh   // 启动HDFS
./start-yarn.sh   // 启动YARN

Une fois le démarrage terminé, vous pouvez afficher l'état du cluster Hadoop en visitant http:// localhost:50070 et http://localhost:8088 pour accéder au gestionnaire de ressources YARN.

  1. Exemple : informatique distribuée WordCount

WordCount est un exemple de programme classique utilisé pour compter le nombre d'occurrences de chaque mot dans un texte. Ci-dessous, nous utiliserons Java pour effectuer un calcul distribué de WordCount.

Tout d'abord, créez un projet Java et introduisez le package jar Hadoop.

Créez une classe WordCount dans le projet et écrivez-y l'implémentation de Map et Reduction.

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

public class WordCount {

  public static class WordCountMapper 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 {
      String[] words = value.toString().split(" ");
      for (String word : words) {
        this.word.set(word);
        context.write(this.word, one);
      }
    }
  }

  public static class WordCountReducer 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(WordCountMapper.class);
    job.setCombinerClass(WordCountReducer.class);
    job.setReducerClass(WordCountReducer.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, nous devons préparer les données d'entrée. Créez un répertoire d'entrée sur le cluster Hadoop et placez les fichiers texte nécessitant des statistiques dans ce répertoire.

Enfin, nous pouvons soumettre le travail WordCount à exécuter sur le cluster Hadoop à l'aide de la commande suivante :

hadoop jar WordCount.jar WordCount <input-directory> <output-directory>

Remplacez et par les répertoires d'entrée et de sortie réels.

Une fois l'opération terminée, nous pouvons visualiser le fichier de résultat dans le répertoire de sortie, qui contient chaque mot et son nombre d'occurrences correspondant.

Cet article présente les étapes de base du calcul distribué de données à grande échelle à l'aide de Java et fournit un exemple WordCount spécifique. Nous espérons que les lecteurs pourront mieux comprendre et appliquer la technologie informatique distribuée grâce à l'introduction et aux exemples de cet article, afin de traiter plus efficacement des données à grande échelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn