cgroups
TaskTracker によって生成された各プロセスが特定の 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 を使用する際に他に確認することはありますか?