1

JAR ファイルに含まれている Java プログラムを実行する必要がありますが、Java ヒープ サイズを増やす必要があるというエラーが表示されます。コマンドラインを使用してヒープサイズを増やす必要があります。java -Xmx6144M -d64 を試しましたが、うまくいきませんでした。一方、java -Xmx6144M ClassName には ClassName が必要です。jar 内にあるクラス名を指定するにはどうすればよいですか? すべてのクラスの Java ヒープを増やすコマンドはありますか?

エラーは次のとおりです。

ava.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.regex.Pattern.compile(Pattern.java:1047)
    at java.lang.String.replace(String.java:2180)
    at org.apache.hadoop.fs.Path.normalizePath(Path.java:146)
    at org.apache.hadoop.fs.Path.initialize(Path.java:137)
    at org.apache.hadoop.fs.Path.<init>(Path.java:126)
    at org.apache.hadoop.fs.Path.makeQualified(Path.java:296)
    at org.apache.hadoop.fs.RawLocalFileSystem$RawLocalFileStatus.<init>(RawLocalFileSystem.java:375)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:359)
    at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:290)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:721)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:746)
    at org.apache.hadoop.fs.ChecksumFileSystem.listStatus(ChecksumFileSystem.java:465)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:721)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:746)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:212)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:241)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:120)
4

1 に答える 1

2

起動したマップ タスクのメモリ割り当てを増やす必要があると思います。デフォルトは 200 MB ですが、あなたのケースでは不十分なようです。ドライバー クラスが Tool のサブクラスである場合は、次の引数 -Dmapred.child.java.opts=-Xmx500m を渡すことができます。ここでは、メモリを 200 から 500 に増やしています。

map reduce ジョブのプロファイリングを実行して、どのオブジェクトがメモリを占有しているかを確認することもできます。

于 2013-09-04T17:14:34.980 に答える