9

私の Hadoop バージョンは 1.0.2 です。現在、同時に実行するマップ タスクは最大 10 個です。この質問に関連する 2 つの変数が見つかりました。

a) mapred.job.map.capacity

しかし、私の Hadoop バージョンでは、このパラメーターは放棄されているようです。

b) mapred.jobtracker.taskScheduler.maxRunningTasksPerJob (http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.collector/1.0.2/mapred-default.xml)

この変数を次のように設定します。

Configuration conf = new Configuration();
conf.set("date", date);
conf.set("mapred.job.queue.name", "hadoop");
conf.set("mapred.jobtracker.taskScheduler.maxRunningTasksPerJob", "10");

DistributedCache.createSymlink(conf);
Job job = new Job(conf, "ConstructApkDownload_" + date);
...

問題は、それが機能しないことです。ジョブの開始時にまだ 50 を超えるマップが実行されています。

Hadoop ドキュメントを調べた後、同時実行マップ タスクを制限する別のドキュメントが見つかりません。誰かが私を助けてくれることを願っています、ありがとう。

=====================

私はこの質問についての答えを見つけました。ここで、興味のある他の人に共有してください。

割り当てファイル (fair-scheduler.xml) で、プールの最大同時タスク スロットを設定する構成パラメーター maxMaps を使用して、公平なスケジューラーを使用します。次に、ジョブを送信するときに、ジョブのキューを対応するプールに設定するだけです。

4

5 に答える 5

5

の値をmapred.jobtracker.maxtasks.per.job-1 (デフォルト) 以外に設定できます。これにより、ジョブが使用できるマップまたはリデュース タスクの同時数が制限されます。

この変数は次のように記述されます。

1 つのジョブのタスクの最大数。-1 の値は、最大値がないことを示します。

mapred.max.maps.per.nodeジョブ構成の追加や追加の計画はあったと思いますがmapred.max.reduces.per.node、リリースには至りませんでした。

于 2013-04-02T16:18:01.880 に答える
4

Hadoop 2.7 以降を使用している場合は、mapreduce.job.running.map.limitおよびを使用しmapreduce.job.running.reduce.limitて、各ジョブ レベルでマップおよびリデュース タスクを制限できます。

JIRA チケットを修正します。

于 2015-08-05T15:33:29.343 に答える
1

mapred.tasktracker.map.tasks.maximumは、一度に実行できるマップタスクの数を制限するためのプロパティです。mapred-site.xmlで構成します。

http://wiki.apache.org/hadoop/FAQの2.7を参照してください

于 2013-01-17T14:42:49.390 に答える
0

実行されるマッパーの数は、入力ブロック サイズによって決まります。入力ブロック サイズは、データが分割され、HDFS から読み取られる間に別のマッパーに送信されるチャンクのサイズです。したがって、マッパーの数を制御するには、ブロック サイズを制御する必要があります。

これは、MapReduce でジョブを構成する際にパラメーターmapred.min.split.sizeおよび を設定することで制御できます。mapred.max.split.size値はバイト単位で設定されます。したがって、20 GB のファイルがあり、40 個のマッパーを起動したい場合、それぞれ 20480 / 40 = 512 MB に設定する必要があります。そのためのコードは、

conf.set("mapred.min.split.size", "536870912");
conf.set("mapred.max.split.size", "536870912");

はクラスconfのオブジェクトです。org.apache.hadoop.conf.Configuration

于 2013-01-22T09:29:04.773 に答える
0

Hadoop でのジョブのスケジューリング (「公正なスケジューラ」など) についてお読みください。多くの構成でカスタム キューを作成し、それにジョブを割り当てることができます。カスタム キューの最大マップ タスクを 10 に制限すると、キューに割り当てられる各ジョブは最大で 10 個の同時マップ タスクを持ちます。

于 2016-05-04T10:14:05.617 に答える