Hadoopクラスタは、コードをコミット

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;



2018年1月14日*フランキーONによって作成されます。
* KEYIN:デフォルトでは、開始オフセットは、MRフレームワークであるテキストの行を読んで、ロングはHadoopのインターフェイスを合理化する独自の配列を有し、それは直接使用されていません長い、しかしLongWritableで
* VALUEIN:デフォルトでは、コンテンツのフレームワークのMRは、テキストの行を読んで、文字列
* KEYOUT:ユーザ定義ロジック処理された出力データ・キー、ここで言葉がある、文字列
* VALUEOUTは:治療が完了した後vlaueは、カスタム・ロジックの出力データであり、回数語、整数
*
*
** /

パブリック クラスは、 拡張 マッパー < LongWritableテキストテキストIntWritableを > {

/ *
*地図カスタム()メソッドに書かれたビジネスロジックの地図段階
*マップタスクは、当社のカスタムマップ()メソッドは、入力データの各行に1回呼び出されます
* * / 保護された無効地図(LongWritableキー、テキスト値を、コンテキストコンテキスト)はスローにIOException、InterruptedExceptionある { ;列= value.toStringラインを() 文字列[] = line.split単語("" のために(文字列ワード:ワード){ //キーとしてワード、値として数1同じことが同じ単語タスクの削減を使用されるように、後続のデータでの配布のために、言葉に応じて配布することができます。//マップ作業が収集、ドキュメントに書かれ 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;

/ **
* 2018年1月14日ONフランキーによって作成。
*
* KEYIN、対応するマッパー出力VALUEIN KEYOUTは、VALUEOUTタイプは対応
* KEYOUT、VALUEOUTが低減カスタムロジック処理結果出力データ型
* KEYOUTワード、
*値総数である
* /
パブリック クラス WordCountReducer 延び 減速 < テキストIntWritableテキストIntWritable > {

@Override 保護ボイド低減(テキストキー、反復処理可能<IntWritable>値は、コンテキスト・コンテキスト)がスローにIOException、InterruptedExceptionある { / *を キーにパラメータが設定されたキーは、同じワードKVの上にある コンテキストコンテキスト * / INT COUNT = 0







//イテレータ<IntWritable>イテレータ= values.iterator()。
//一方(iterator.hasNext()){
//カウント+ = iterator.next())(得ます。
//}
//

ため(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;

/**
* Created by Frankie on 2018/1/14.
*
* 相当于yarn集群的客户端
* 需要在此封装mr进程的相关运行参数,指定jar包,最后提交给yarn
*/

public class WordCount {

public static void main(String[] args) throws Exception{
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "wordcount");

// 指定本进程的jar包所在的本地路径
job.setJarByClass(WordCount.class);

// 指定本业务使用的map业务类
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);

// 指定mapper输出数据的kv类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);

//指定最终输出的数据的kv类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

//指定job的输入原始文档所在目录
// /data/adult.data
FileInputFormat.setInputPaths(job, new Path(args[1]));

// 指定job的输出结果所在目录
FileOutputFormat.setOutputPath(job, new Path(args[2]));

// // 将job中配置的相关参数,以及job所用的java类所在的Jar包,提交给yarn去运行
// job.submit();

// 提交job配置,一直等待到运行结束
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クラスタは、コードをコミット


おすすめ

転載: www.cnblogs.com/petewell/p/11444787.html