次のジョブでメモリがどこで使用されているのか疑問に思っています。
- Hadoop マッパー/リデューサーのヒープ サイズ:
-Xmx2G
ストリーミング API:
- マッパー:
/bin/cat
- レデューサー:
wc
- マッパー:
入力ファイルは 350MByte のファイルで、1行が
a
's でいっぱいです。
これは、実際に遭遇した問題を単純化したものです。
HDFS からファイルを読み取ってText
-Object を構築しても、ヒープが 700MB を超えることText
はありません (1 文字あたり 16 ビットも使用すると仮定します)。それについてはよくわかりませんが、 Text
8 ビットしか使用していないと想像できます。
したがって、これらの (最悪の場合) 700MB 回線があります。行はヒープに少なくとも 2 倍収まるはずですが、常にメモリ不足エラーが発生します。
これは、Hadoop の潜在的なバグ (不正なコピーなど) ですか?それとも、必要なメモリを集中的に使用する手順を理解していないだけですか?
さらなるヒントがあれば本当に感謝します。