2

cgroupsTaskTracker によって生成された各プロセスが特定の cgroup に割り当てられるように Hadoopを構成することは可能ですか?

を使用してメモリ制限を適用したいcgroups。TaskTracker に cgroup を割り当てることは可能ですが、ジョブが大混乱を引き起こした場合、TaskTracker もoom-killer同じグループにあるため、おそらく によって強制終了されます。

マシンに 8GB のメモリがあるとします。DataNode とシステム ユーティリティ用に 1.5 GB を確保し、Hadoop TaskTracker に 6.5 GB のメモリを使用させたいと考えています。ここで、ストリーミング API を使用してジョブを開始し、許容量を超えるメモリを消費する 4 つのマッパーと 2 つのレデューサー (理論的にはそれぞれが 1GB の RAM を使用できます) を生成します。メモリの上限に達し、oom cgroup-killer がジョブを強制終了し始めます。Map および Reduce タスクごとに cgroup を使用したいと思います。たとえば、cgroupメモリが 1GB に制限されています。

これは本当の問題ですか、それともより理論的な問題ですか? oom-killer本当に Hadoop TaskTracker を強制終了するのでしょうか、それともフォークされたプロセスを最初に強制終了し始めるのでしょうか? 後者がほとんどの場合に当てはまる場合、私の考えはおそらくうまくいくでしょう。そうでない場合、ジョブが正しくない場合、すべてのクラスター マシンで TaskTracker が強制終了され、手動で再起動する必要があります。

cgroups を使用する際に他に確認することはありますか?

4

2 に答える 2

0

多くの学生やスタッフが Hadoop クラスターにアクセスしてジョブを送信している場合は、Hadoop でのジョブ スケジューリングを参照してください。

ここにあなたが興味を持っているかもしれないいくつかのタイプの要点があります -

フェア スケジューラ: フェア シェア スケジューラの背後にある中心的なアイデアは、時間の経過とともに平均して各ジョブが利用可能なリソースを均等に配分するようにリソースをジョブに割り当てることでした。公平性を確保するために、各ユーザーはプールに割り当てられます。このようにして、1 人のユーザーが多くのジョブを送信した場合、そのユーザーは他のすべてのユーザーと同じ量のクラスター リソースを受け取ることができます (送信した作業に関係なく)。

キャパシティ スケジューラ: キャパシティ スケジューリングでは、プールの代わりに複数のキューが作成され、それぞれに構成可能な数のマップおよびリデュース スロットがあります。各キューには、保証された容量も割り当てられます (クラスターの全体的な容量は、各キューの容量の合計です)。キャパシティ スケジューリングは、複数の独立したコンシューマーとターゲット アプリケーションを持つ可能性がある大規模なクラスター用に定義されました。

時間がないため、上記のものを恥知らずにコピーしたリンクは次のとおりです。 http://www.ibm.com/developerworks/library/os-hadoop-scheduling/index.html

Hadoop を構成するには、次のリンクを使用します: http://hadoop.apache.org/docs/r1.1.1/fair_scheduler.html#Installation

于 2013-03-05T07:36:10.097 に答える