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プラットフォームで単語カウントプログラムを作成することは成功しています!!