Hadoopクラスタでは、完成したMapReduceは、作業を完了したjarパッケージを戦うために必要があり、その後、クラスタジャーに提出していませんでした。Hadoopが提出ジャーへのアクセスを提供します。
、HadoopのMapReduceのエントリ・レベルのプロセスを記述WORDCOUNTを書き、基本的にマップリデュースの80%が理解WORDCOUNT。
MapReduceのは、マッププロセスを分割して処理を減らす、ユーザーがマッププロセスをカスタマイズし、自分のビジネスに応じた処理を減らすことができます。
例えばWORDCOUNTするには、テキストで表示された単語の数を計算するには、単語のテキストや統計情報を読み込む必要があります。
マッププロセス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
パッケージ com.hadoop.mapreduce。
輸入 org.apache.hadoop.io.IntWritable; 輸入 org.apache.hadoop.io.LongWritable; 輸入 org.apache.hadoop.io.Text; 輸入 org.apache.hadoop.mapreduce.Mapper;
インポートにjava.io.IOException;
パブリック クラスは、 拡張 マッパー < LongWritable、テキスト、テキスト、IntWritableを > {
保護された無効地図(LongWritableキー、テキスト値を、コンテキストコンテキスト)はスローにIOException、InterruptedExceptionある { ;列= value.toStringラインを() 文字列[] = line.split単語("" )のために(文字列ワード:ワード){ context.write(新しい新しいテキスト(ワード)、新新 IntWritable(1)); } }
}
|
プロセスを減らします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
パッケージ com.hadoop.mapreduce。
輸入 org.apache.hadoop.io.IntWritable; 輸入 org.apache.hadoop.io.Text; 輸入 org.apache.hadoop.mapreduce.Reducer。
インポートにjava.io.IOException; インポートするjava.util.Iterator;
パブリック クラス WordCountReducer 延び 減速 < テキスト、IntWritable、テキスト、IntWritable > {
@Override 保護ボイド低減(テキストキー、反復処理可能<IntWritable>値は、コンテキスト・コンテキスト)がスローにIOException、InterruptedExceptionある { INT COUNT = 0。
ため(IntWritable値:値){ ()+ = value.getを数えます。 } context.write(キー、新しい IntWritable(カウント));
} }
|
mapreduce过程存在一些问题,比如,
Map task如何进行任务分配?
Reduce task如何进行任务分配?
Map task与 reduce task如何进行衔接?
如果某map task 运行失败,如何处理?
Map task如果都要自己负责数据的分区,很麻烦
为例解决这些问题,需要有个master专门对map reduce进行管理。
在WordCount文档中,有专门对作业进行配置,以及最后将代码提交到客户端。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
package com.hadoop.mapreduce;
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.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
public static void main(String[] args) throws Exception{ Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "wordcount");
job.setJarByClass(WordCount.class);
job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class);
job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class);
FileInputFormat.setInputPaths(job, new Path(args[1]));
FileOutputFormat.setOutputPath(job, new Path(args[2]));
boolean res = job.waitForCompletion(true); System.exit(res? 0: 1); } }
|
代码编辑完成后,对代码进行打包。我们在这里选择不依赖第三方包的打包方式进行打包。
打完包后,将生成的jar包提交到服务器中去。
并执行,
1
|
leilineの@マスター:〜/書類/ Hadoopの/ myJarsます$ HadoopのジャーHadoopMapReduce.jar com.hadoop.mapreduce.WordCount /データ/アダルト/データ/アウト
|
文書は自動的に手動で作成するには、ユーザを必要としない方法で作成されてから、注意してください。コードが完了した後に最後に、あなたは、HDFSの実装で結果を見ることができます:
1 2 3
|
見出さ2つのアイテム -rw-R - r--の3 leilineスーパーグループ0 2018年1月14日19時01 /データ/アウト/ _SUCCESS -rw-R - r--の3 leilineスーパーグループ216737 2018年1月14日19: 01 /データ/アウト/部分-R-00000
|
オリジナル:ビッグボックスの Hadoopクラスタは、コードをコミット