2

Hadoopタスクの割り当てについて混乱しました。5つの入力データD1、D2、D3、D4、D5があるとすると、5つのジョブJ1、J2、J3、J4、J5があり、ジョブJ1の入力データはD1というようになります。ここで、D1が4つのブロックに分割され、これらのブロックがデータセンターに沿って分散されている場合、J1もタスク(マップおよびリデュース)に分割されます。データの局所性はどのように保持されますか?mapTask1がD1のデータブロックを1つだけ必要とするということですか?良い説明をお願いします。

4

1 に答える 1

1

D1がHDFSに4ブロックとして保存され、ファイルの読み取りに使用している入力形式でファイルを分割できる場合(たとえば、gz圧縮ファイルは分割できません)、D1を使用するジョブの4つのマップタスクを取得します。入力。

mapred.min.split.sizeおよび構成プロパティを修正することにより、マップタスクの数を増減mapred.max.split.sizeできます(ここでも、入力ファイルが分割可能であり、入力形式でもサポートされていると想定しています)。

データの局所性に関しては、ジョブが送信されると、入力ファイル(D1)のブロックの場所が名前ノードから取得され、ジョブを実行するために作成されたマップタスクがこの情報を保持します(D1、ブロック0、 node1では、「分割」情報として知られています)。

ジョブトラッカーがタスクをスケジュールするようになると、どのタスクトラッカーに空きマップスロットがあるかを調べ、(可能であれば)入力データブロックがタスクトラッカーに対して「ローカル」である分割があるジョブのタスクを特定します。

削減タスクの数は、構成するのはあなた次第です。

于 2012-10-02T23:49:32.013 に答える