それは、より熟練することができ、同時に実際の動作の理論的基礎を学ぶために時間のHadoopの期間についての知識を習得する前に、ADO、それはプログラムを数える最も簡単な言葉のHadoopの1で実行するように言いました
私はあなたの参照コードのプログラムのソースコードが書かれた3つの部分に分かれているペーストしたいと思いますまず第一に、実行フェーズをマップする、段階を減らします
地図:
-
パッケージ wordsCountを。
-
-
インポート
にjava.io.IOException;
-
輸入
java.util.StringTokenizer;
-
-
輸入
org.apache.hadoop.io.IntWritable;
-
輸入
org.apache.hadoop.io.LongWritable;
-
輸入
org.apache.hadoop.io.Text;
-
輸入
org.apache.hadoop.mapreduce.Mapper;
-
-
パブリック
クラス WordsMapperは 拡張 マッパー < LongWritable、テキスト、テキスト、IntWritableを >
{
-
@オーバーライド
-
保護された 無効 マップ(LongWritableキー、テキスト値、マッパー<LongWritable、テキスト、テキスト、IntWritable> .Contextコンテキスト)
-
スロー
にIOException、InterruptedExceptionが{
-
-
列ライン= value.toString()。
-
StringTokenizerはstが= 新しい StringTokenizerは(ライン)。
-
一方、
(st.hasMoreTokens()){
-
ストリング・ワード= st.nextToken()。
-
context.write(新しいテキスト(ワード)、 新しい IntWritable( 1));
-
}
-
-
}
-
-
}
削減:
-
パッケージ wordsCountを。
-
-
インポート
にjava.io.IOException;
-
-
輸入
org.apache.hadoop.io.IntWritable;
-
輸入
org.apache.hadoop.io.Text;
-
輸入
org.apache.hadoop.mapreduce.Reducer;
-
-
パブリック
クラス WordsReduceが 拡張 リデューサー < テキスト、IntWritable、テキスト、IntWritable >
{
-
-
@オーバーライド
-
保護された 無効 削減(テキストキー、反復処理可能<IntWritable>イテレータ、
-
減速<テキスト、IntWritable、テキスト、IntWritable> .Contextコンテキスト)が
スロー
にIOException、InterruptedExceptionあるが{
-
自動的にスタブを生成する// TODO方法
-
int型
私は=
0を
。
-
用
{(イテレータIntWritable I)
-
和=和+ i.get()。
-
}
-
context.write(キー、新しい IntWritable(合計));
-
}
-
}
-
パッケージ wordsCountを。
-
-
-
輸入
org.apache.hadoop.conf.Configuration。
-
輸入
org.apache.hadoop.fs.Path。
-
輸入
org.apache.hadoop.io.IntWritable;
-
輸入
org.apache.hadoop.io.Text;
-
輸入
org.apache.hadoop.mapreduce.Job。
-
輸入
org.apache.hadoop.mapreduce.lib.input.FileInputFormat。
-
輸入
org.apache.hadoop.mapreduce.lib.input.TextInputFormat。
-
輸入
org.apache.hadoop.mapreduce.lib.output.FileOutputFormat。
-
輸入
org.apache.hadoop.mapreduce.lib.output.TextOutputFormat。
-
-
パブリック
クラス を実行します
{
-
-
パブリック 静的 ボイド メイン(文字列[]引数)が スロー例外
{
-
自動的にスタブを生成する// TODO方法
-
コンフィギュレーションの設定= 新しいコンフィギュレーション();
-
ジョブジョブ= 新しい仕事(コンフィギュレーション)。
-
job.setJarByClass(Run.class)。
-
job.setJobName("言葉は数えます!");
-
-
job.setOutputKeyClass(Text.class)。
-
job.setOutputValueClass(IntWritable.class)。
-
-
job.setInputFormatClass(TextInputFormat.class)。
-
job.setOutputFormatClass(TextOutputFormat.class)。
-
-
job.setMapperClass(WordsMapper.class)。
-
job.setReducerClass(WordsReduce.class)。
-
-
FileInputFormat.addInputPath(仕事、新しいパス( "HDFS://192.168.1.111:9000 /ユーザー/入力/ WC /" ));
-
FileOutputFormat.setOutputPath(仕事、新しいパス( "HDFS://192.168.1.111:9000 /ユーザー/結果/" ));
-
-
job.waitForCompletion(真の);
-
}
-
}
これらの変性に記載の入出力パス内で実行
このプログラムは、それがどこでも見つけることができます説明する必要はありません
最初の二つの方法でのHadoop上でこのプログラムを実行します
方法の一つ:独自のソフトウェアをコンパイルして、接続のHadoop(私はリンクのHadoopへのMyEclipseを使用)、直接プログラムを実行します。MyEclipseのチュートリアルは、私は記事の最後にあなたの参照のためのリンクを与えるのHadoop接続されます。
それはあなたが成功していること、次のメッセージを参照してください。あなたがして、操作の結果を表示することができますあなたの出力フォルダを
コンテンツの出力である第二のファイル
第二の方法:JARファイルにパッケージのMapReduce
ここでは、包装の簡単な発話方法
そして、次のステップを完了することができます
瓶の上にSSHのパスを使用した後、あなたのHadoopのインストールマシンにパッケージ化されたjarファイル(私のHadoopクラスタをLinux仮想マシンにインストールされている)の場合:
HadoopのインストールディレクトリのHadoopの下のbinディレクトリにある実行ファイル、およびそれに次の操作を行います。
私のシェルを説明するためのステートメントの下で
/home/xiaohuihui/wordscount.jar:パッケージ後のjarファイルの場所(スプレッド仮想マシンの場所)
wordsCount /ラン:場所の名前あなたのjarパッケージ主な機能は、(ここでの主な機能はRun.classである)あなたのjarファイルビューアを開くことができますが、知っているだろう
また、ファイルの入出力パスを追加しますが、私は私のプログラムでは、この文の後に設定されていることをすることができます
あなたはあなたに、その後、お祝いの言葉を上記のステートメントを実行した場合、シェルの後の成功を次の出力を参照してください!!
あなたは、それはまた、ファイルシステム(:50070ローカルホスト)を表示するページをHDFSすることができ、あなたのEclipseの結果は、Hadoopのビューを接続見ることができます。
あり、非常に重要なステップがされている、あなたのHadoopが開始されていることを確認するために実行する前に、あなたのクラスタのHadoopプロセスはJPSによって開始されているかどうかを確認することができます
Eclipseの连接のHadoopます。http://blog.csdn.net/xjavasunjava/article/details/12320045