Map-reduce-api

提供:Dev Guides
移動先:案内検索

MapReduce-API

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

  • JobContextインターフェイス
  • 職種
  • マッパークラス *減速機クラス

JobContextインターフェイス

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

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

S.No. Subinterface Description
1.
  • MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>*

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

2.

ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

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

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

職種

Jobクラスは、MapReduce APIで最も重要なクラスです。 これにより、ユーザーはジョブの構成、送信、実行の制御、状態の照会を行うことができます。 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 Constructor Summary
1 Job()
2 Job(Configuration conf)
3 Job(Configuration conf, String jobName)

方法

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

S.No Method Description
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ジョブを定義します。 入力キーと値のペアを一連の中間キーと値のペアにマップします。 マップは、入力レコードを中間レコードに変換する個々のタスクです。 変換された中間レコードは、入力レコードと同じタイプである必要はありません。 特定の入力ペアは、ゼロまたは多数の出力ペアにマッピングできます。

方法

*map* は、Mapperクラスの最も顕著なメソッドです。 構文は以下に定義されています-
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

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

減速機クラス

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

  • シャッフル-レデューサーは、ネットワーク全体でHTTPを使用して各マッパーからソートされた出力をコピーします。
  • ソート-フレームワークは、Reducerの入力をキーでマージソートします(異なるマッパーが同じキーを出力する可能性があるため)。 シャッフルフェーズとソートフェーズは同時に発生します。つまり、出力のフェッチ中にマージされます。
  • Reduce -このフェーズでは、ソートされた入力の各<key、(values of collection)>に対してreduce(Object、Iterable、Context)メソッドが呼び出されます。

方法

*reduce* は、Reducerクラスの最も顕著なメソッドです。 構文は以下に定義されています-
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

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