Heim  >  Artikel  >  Java  >  Java-Entwicklung: Umgang mit verteilter Datenverarbeitung großer Datenmengen

Java-Entwicklung: Umgang mit verteilter Datenverarbeitung großer Datenmengen

PHPz
PHPzOriginal
2023-09-21 14:55:44615Durchsuche

Java-Entwicklung: Umgang mit verteilter Datenverarbeitung großer Datenmengen

Java-Entwicklung: Für die Verarbeitung verteilter Berechnungen großer Datenmengen sind spezifische Codebeispiele erforderlich.

Mit dem Aufkommen des Big-Data-Zeitalters wächst auch die Nachfrage nach der Verarbeitung großer Datenmengen. In einer herkömmlichen eigenständigen Computerumgebung ist es schwierig, diesen Bedarf zu decken. Daher ist verteiltes Rechnen zu einem wichtigen Mittel zur Verarbeitung großer Datenmengen geworden. Java spielt als beliebte Programmiersprache eine wichtige Rolle im verteilten Rechnen.

In diesem Artikel stellen wir die Verwendung von Java für die verteilte Berechnung großer Datenmengen vor und stellen spezifische Codebeispiele bereit. Zunächst müssen wir eine verteilte Computerumgebung basierend auf Hadoop aufbauen. Anschließend demonstrieren wir anhand eines einfachen WordCount-Beispiels, wie mit der verteilten Berechnung großer Datenmengen umgegangen wird.

  1. Erstellen Sie eine verteilte Computerumgebung (basierend auf Hadoop).

Um verteiltes Computing zu implementieren, müssen Sie zunächst eine verteilte Computerumgebung erstellen. Hier entscheiden wir uns für die Verwendung von Hadoop, einem weit verbreiteten Open-Source-Framework für verteiltes Computing.

Zuerst müssen wir Hadoop herunterladen und installieren. Die neueste Release-Version kann von der offiziellen Hadoop-Website (https://hadoop.apache.org/) bezogen werden. Befolgen Sie nach dem Herunterladen die Anweisungen in der offiziellen Dokumentation zur Installation und Konfiguration.

Nachdem die Installation abgeschlossen ist, müssen wir den Hadoop-Cluster starten. Öffnen Sie das Befehlszeilenterminal, wechseln Sie in das Sbin-Verzeichnis des Hadoop-Installationsverzeichnisses und führen Sie den folgenden Befehl aus, um den Hadoop-Cluster zu starten:

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

Nach Abschluss des Startvorgangs können Sie den Status des Hadoop-Clusters anzeigen, indem Sie http:// besuchen. localhost:50070 und http://localhost:8088 für den Zugriff auf den YARN-Ressourcenmanager.

  1. Beispiel: WordCount Distributed Computing

WordCount ist ein klassisches Beispielprogramm, mit dem die Häufigkeit des Vorkommens jedes Wortes im Text gezählt wird. Im Folgenden verwenden wir Java, um eine verteilte Berechnung von WordCount durchzuführen.

Erstellen Sie zunächst ein Java-Projekt und führen Sie das Hadoop-JAR-Paket ein.

Erstellen Sie im Projekt eine WordCount-Klasse und schreiben Sie die Implementierung von Map and Reduce darin.

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

Als nächstes müssen wir die Eingabedaten vorbereiten. Erstellen Sie ein Eingabeverzeichnis im Hadoop-Cluster und platzieren Sie die Textdateien, für die Statistiken erforderlich sind, in diesem Verzeichnis.

Abschließend können wir den WordCount-Job zur Ausführung auf dem Hadoop-Cluster übermitteln:

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

Ersetzen Sie durch die tatsächlichen Eingabe- und Ausgabeverzeichnisse.

Nachdem der Vorgang abgeschlossen ist, können wir die Ergebnisdatei im Ausgabeverzeichnis anzeigen, die jedes Wort und die entsprechende Anzahl von Vorkommen enthält.

Dieser Artikel stellt die grundlegenden Schritte der verteilten Berechnung großer Datenmengen mit Java vor und bietet ein spezifisches WordCount-Beispiel. Wir hoffen, dass die Leser durch die Einleitung und Beispiele dieses Artikels die verteilte Computertechnologie besser verstehen und anwenden können, um große Datenmengen effizienter zu verarbeiten.

Das obige ist der detaillierte Inhalt vonJava-Entwicklung: Umgang mit verteilter Datenverarbeitung großer Datenmengen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn