MapReduce-API

この章では、MapReduceプログラミングの操作に関係するクラスとそのメソッドを詳しく見ていきます。私たちは主に次のことに焦点を当てます-

  • JobContextインターフェース
  • ジョブクラス
  • マッパークラス
  • レデューサークラス

JobContextインターフェース

JobContextインターフェースは、すべてのクラスのスーパーインターフェースであり、MapReduceでさまざまなジョブを定義します。タスクの実行中にタスクに提供されるジョブの読み取り専用ビューを提供します。

以下は、JobContextインターフェースのサブインターフェースです。

S.No. サブインターフェイスの説明
1.1。 MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

マッパーに与えられるコンテキストを定義します。

2.2。 ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

レデューサーに渡されるコンテキストを定義します。

Jobクラスは、JobContextインターフェイスを実装するメインクラスです。

ジョブクラス

Jobクラスは、MapReduceAPIで最も重要なクラスです。これにより、ユーザーはジョブの構成、送信、実行の制御、および状態の照会を行うことができます。setメソッドは、ジョブが送信されるまでのみ機能し、その後はIllegalStateExceptionをスローします。

通常、ユーザーはアプリケーションを作成し、ジョブのさまざまな側面を説明してから、ジョブを送信してその進行状況を監視します。

これが仕事を提出する方法の例です-

// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);

// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));

job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);

// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);

コンストラクター

以下は、Jobクラスのコンストラクターの要約です。

S.No コンストラクターの要約
1 Job()
2 Job(構成設定)
3 Job(構成設定、文字列jobName)

メソッド

Jobクラスの重要なメソッドのいくつかは次のとおりです-

S.No メソッドの説明
1 getJobName()

ユーザー指定のジョブ名。

2 getJobState()

ジョブの現在の状態を返します。

3 isComplete()

ジョブが終了したかどうかを確認します。

4 setInputFormatClass()

ジョブのInputFormatを設定します。

5 setJobName(String name)

ユーザー指定のジョブ名を設定します。

6 setOutputFormatClass()

ジョブの出力形式を設定します。

7 setMapperClass(Class)

ジョブのマッパーを設定します。

8 setReducerClass(Class)

ジョブのレデューサーを設定します。

9 setPartitionerClass(Class)

ジョブのパーティショナーを設定します。

10 setCombinerClass(Class)

ジョブのコンバイナを設定します。

マッパークラス

Mapperクラスは、Mapジョブを定義します。入力Key-Valueペアを一連の中間Key-Valueペアにマップします。マップは、入力レコードを中間レコードに変換する個々のタスクです。変換された中間レコードは、入力レコードと同じタイプである必要はありません。特定の入力ペアは、ゼロまたは多数の出力ペアにマップできます。

方法

mapMapperクラスの最も顕著なメソッドです。構文は以下に定義されています-

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

このメソッドは、入力分割のキーと値のペアごとに1回呼び出されます。

レデューサークラス

Reducerクラスは、MapReduceでReduceジョブを定義します。キーを共有する中間値のセットを、より小さな値のセットに減らします。レデューサーの実装は、JobContext.getConfiguration()メソッドを介してジョブの構成にアクセスできます。レデューサーには、シャッフル、ソート、リデュースの3つの主要なフェーズがあります。

  • Shuffle −レデューサーは、ネットワーク全体でHTTPを使用して、各マッパーからソートされた出力をコピーします。

  • Sort−フレームワークマージ-レデューサー入力をキーでソートします(異なるマッパーが同じキーを出力した可能性があるため)。シャッフルフェーズとソートフェーズは同時に発生します。つまり、出力がフェッチされている間、それらはマージされます。

  • Reduce −このフェーズでは、reduce(Object、Iterable、Context)メソッドが、ソートされた入力の<key、(値のコレクション)>ごとに呼び出されます。

方法

reduceReducerクラスの最も顕著なメソッドです。構文は以下に定義されています-

reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

このメソッドは、キーと値のペアのコレクションのキーごとに1回呼び出されます。