hadoop—增加jar中类的java堆大小

drkbr07n  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(351)

我需要执行包含在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)
f5emj3cl

f5emj3cl1#

我认为您需要为已启动的map任务增加内存分配。默认值是200MB,这在您的情况下似乎不够。如果驱动程序类是tool的子类,那么可以传递以下参数-dmapred.child.java.opts=-xmx500m。在这里,您正在将内存从200提升到500。
您还可以对map reduce作业进行分析,以查看哪些对象正在占用内存。

相关问题