ビッグデータとの戦いLinuxUbuntu 20.04.1 hadoop 2.8.5MapReduceプラットフォームで単語カウントプログラムを作成する

1.準備作業

Hadoop環境が正常に構築されました。
Hadoop環境を構築する方法の詳細については、ここをクリックしてください

2.サーバー最小化システムで単語を数える

2.1ユーザーを切り替え、プロセスを表示する

目的:hadoopクラスターで
su-angel
マスターノードプロセスが有効になっていることを確認します
ここに画像の説明を挿入

スレーブノードプロセス
ここに画像の説明を挿入

2.3テスト文書を作成する

テストドキュメントのパスは/ home / angel
vim.tinysw1.txtです。
ここに画像の説明を挿入

vim.tiny sw2.txt
ここに画像の説明を挿入

2.4テストフォルダーを作成し、クラスターにアップロードします

クラスター内のファイル
hdfsdfs-lsを表示します/
ここに画像の説明を挿入
クラスター内にテストフォルダーとしてテストフォルダーを作成します
hdfsdfs -mkdir / test
ここに画像の説明を挿入
テストフォルダーをクラスターにアップロードします
hdfsdfs -put sw * .txt / test
ここに画像の説明を挿入
テストフォルダーを表示しました正常にアップロードされない
hdfsdfs -ls / testsw1.txt
ここに画像の説明を挿入
のコンテンツを表示する
hdfsdfs -cat /test/sw1.txt
ここに画像の説明を挿入

2.5 hadoopパッケージの単語カウントプログラムを実行して、テストファイル内の単語をカウントします

2.5.1関連パッケージを探す

cd /app/hadoop-2.8.5/
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2.5.2単語をカウントするためにhadoopパッケージのクラスを実行します

hadoopコマンドを使用してhadoop-mapreduce-examples-2.8.5パッケージのwordcountクラスを実行し、/ testと入力して、out1を出力します。
hadoop jar hadoop-mapreduce-examples-2.8.5 jar wordcount / test / out1
ここに画像の説明を挿入

2.5.3クラスター内の出力ファイルを表示する

ここに画像の説明を挿入

ここに画像の説明を挿入
この時点で、haddopクラスターがサーバー最小化システム上に確立され、MapReduceが実行されて単語が正常にカウントされます。

3. Eclipseを実行し、単語カウントプログラムを作成します

3.1準備作業

この記事では、主にMapReduceプラットフォームでのアプリケーションの
詳細について説明します。準備作業を表示するには、ここをクリックして
ください注:
Eclipseは、システムのデスクトップバージョンでのみ実行でき、プロンプトウィンドウでは実行できません

3.2オープンエクリプス

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

3.3プロジェクトを作成し、Hadoopインストールディレクトリを構成します

3.3.1プロジェクトの設定

次の図に示すように、メニューバーで[ファイル]-[新規]-[その他...]を実行し、[プロジェクトのマップ/削減]を選択します。
ここに画像の説明を挿入

プロジェクト名「WordCount」を入力し、「Hadoopインストールディレクトリの構成...」を選択します。
ここに画像の説明を挿入

3.3.2Hadoopインストールディレクトリを構成する

ここに画像の説明を挿入
ここに画像の説明を挿入
[次へ]をクリックします。
ここに画像の説明を挿入
プロジェクトを選択します。
ここに画像の説明を挿入
ここに画像の説明を挿入
このプロジェクト名に対して、Hadoopインストールディレクトリの作成と構成が完了しました。[次へ]をクリックします。

3.4新しいHadoopアドレス

ここに画像の説明を挿入
「場所名」テキストボックスに「master」と入力すると、「Map / Reduce(V2)Mater」の元の「localhost」「Host」が「master」に変更され、「DFSMaster」の元の「Port」が変更されます。 「50040」へ「9000」として、他は変更されません。

ここに画像の説明を挿入
挿入:
なぜ9000なのですか?
構成ファイルに移動して確認できます。
cat /app/hadoop-2.8.5/etc/hadoop/core-site.xmlを使用
ここに画像の説明を挿入
して、右側の青色のマスターがあるかどうか確認します。マスターがある場合は、新しいHadoopアドレスが成功したことを証明します。
ここに画像の説明を挿入

3.5単語数を書くためのクラスを確立する

「WordCount」-「src」で、新しい「WordCount」クラスを作成します。
ここに画像の説明を挿入

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;
import org.apache.hadoop.util.GenericOptionsParser;
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();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length < 2) {
    
    
      System.err.println("Usage: wordcount <in> [<in>...] <out>");
      System.exit(2);
    }
    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);
    for (int i = 0; i < otherArgs.length - 1; ++i) {
    
    
      FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
    }
    FileOutputFormat.setOutputPath(job,
      new Path(otherArgs[otherArgs.length - 1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

ここに画像の説明を挿入

3.6クラスを実行します。プログラムパラメータを追加し、前にメインクラスを設定する必要があります

「実行」-「Run_Confilgurations」、双击「Javaアプリケーション」
ここに画像の説明を挿入

3.6.1プログラムパラメータの追加

「Javaアプリケーション」をダブルクリックし、「名前」テキストボックスに「WordCount」と入力します。
ここに画像の説明を挿入

[引数]タブを選択し、[プログラム引数]テキストボックスに「hdfs:// master:9000 / input」、「hdfs:// master:9000 / output」の2行のパラメーターを入力します。
ここに画像の説明を挿入

3.6.2メインクラスを設定する

プロジェクトのメインカテゴリを選択し、[検索]をクリックして、[
ここに画像の説明を挿入
WordCount-(デフォルトパッケージ)]をメインカテゴリとして設定します。
ここに画像の説明を挿入

3.7干渉を防ぐために、前の実験ファイルをクリアします

ここに画像の説明を挿入
ここに画像の説明を挿入
クラスター内で
ここに画像の説明を挿入
テストファイルを作成/アップロードテストファイルを入力
ここに画像の説明を挿入

3.8クラスターに再接続します

ここに画像の説明を挿入
ここに画像の説明を挿入

3.9Hadoopの実行

ここに画像の説明を挿入
プロジェクトを選択すると、
ここに画像の説明を挿入
コンソールはエラーを報告せず、警告のみを報告します。
ここに画像の説明を挿入

3.10結果を表示する

ここに画像の説明を挿入
デスクトップのウィンドウと一致する文字インターフェイスで結果を表示します。
ここに画像の説明を挿入
これまでのところ、MapReduceプラットフォームで単語カウントプログラムを作成することは成功しています!

おすすめ

転載: blog.csdn.net/qq_45059457/article/details/109153827