2

map reduce ジョブを実行するために hadoop 1.0.3 を使用しています。3 ノード クラスターをセットアップしています。問題は、/conf/mapred-site.xml でプロパティ mapred.map.tasks を 20 に設定したことですが、ジョブを実行し、次の Web ページを使用してクラスター情報にアクセスすると、hadoop は 6 つのマップ タスクしか表示しません。 50030。クラスター内のすべてのノードで上記の構成ファイルを編集しました。助けてください。

よろしく、モーシン

4

3 に答える 3

4

miguno さんの言う通り、Hadoop は mapred.map.tasks の値だけをヒントとして考えます。

そうは言っても、MapReduce をいじっていたときに、最大数を指定することでマップ数を増やすことができました。これはうまくいかないかもしれませんが、試してみてください。

<property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>60</value>
</property>

注: この値は、マップの合計量を表します。したがって、(3) ノードのそれぞれで 20 個のマップを実行する場合は、次のように mapred.map.tasks を指定する必要があります。

<property>
    <name>mapred.map.tasks</name>
    <value>20</value>
</property>
于 2013-01-24T16:05:59.643 に答える
3

この質問は、Setting the number of map tasks と reduce tasks の重複のようです。

Hadoopは、それをヒントと見なす以上のことはしませんmapred.map.tasks

Hadoop wiki で次の情報を参照してください。

実際にマップの数を制御するのは微妙です。mapred.map.tasks パラメータは、マップ数の InputFormat への単なるヒントです。デフォルトの InputFormat の動作は、合計バイト数を適切な数のフラグメントに分割することです。ただし、デフォルトの場合、入力ファイルの DFS ブロック サイズは入力分割の上限として扱われます。分割サイズの下限は、mapred.min.split.size で設定できます。したがって、10TB の入力データが予想され、128MB の DFS ブロックがある場合、mapred.map.tasks がさらに大きくない限り、最終的に 82k のマップになります。最終的に、InputFormat によってマップの数が決まります。

つまり、Hadoop は指定されたユーザーを受け入れ、それmapred.reduce.tasksを操作しません。

mapred.map.tasks要約すると、特定の MapReduce ジョブを強制することはできませんが、強制することはできますmapred.reduce.tasks

編集:直接の質問を少し超えて、間接的にHadoopにより多くのマッパーを使用させる方法があります。mapred.min.split.sizeこれには、dfs.block.sizeとの組み合わせをmapred.max.split.size適切に設定することが含まれます。ここでは、入力ファイルの実際のサイズも影響することに注意してください。詳細については、この回答を参照してください。基本的には、Tom White の Hadoop: The Definite Guide book から引用しています。

于 2013-01-24T15:43:13.103 に答える
0

主に、マップ タスクの数を決定する入力形式です。 http://wiki.apache.org/hadoop/HowManyMapsAndReduces

あなたの質問に対して、デフォルトでは、タスク トラッカーは 2 つのマップを実行します。タスクを同時に削減します。
これを変更するには、プロパティ mapred.map.tasks.maximum を /conf/mapred-site.xml に設定します

. (CPUS > 2) という式を使用することをお勧めします。(CPUS * 0.75) : これを設定している間は 1 です。

于 2013-01-24T15:36:17.717 に答える