AWS EMR の AMI 3.0.4 で Hadoop 2.2.0 への入力として使用しようとしている 90MB のスナッピー圧縮ファイルがあります。
ファイルを読み取ろうとするとすぐに、私のレコード リーダーは次の例外を受け取ります。
2014-05-06 14:25:34,210 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.io.compress.BlockDecompressorStream.getCompressedData(BlockDecompressorStream.java:123)
at org.apache.hadoop.io.compress.BlockDecompressorStream.decompress(BlockDecompressorStream.java:98)
at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:85)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:211)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:365)
...
デフォルトのメモリと io.sort.mb を使用して、AWS で m1.xlarge を実行しています。ファイルを解凍し、それを入力として使用すると、すべてうまくいきます。問題は、非常に多くの圧縮ファイルがあり、すべてを解凍したくないことです。
何らかの構成設定やコードの配線が欠落しているのかどうかはわかりません。続行方法がわからない。