【问题标题】:Out of memory issue for Hadoop copyFromLocalHadoop copyFromLocal 的内存不足问题
【发布时间】:2016-05-26 03:30:27
【问题描述】:

我正在尝试将包含 1,048,578 个文件的目录复制到 hdfs 文件系统中,但出现以下错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2367)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
    at java.lang.StringBuffer.append(StringBuffer.java:237)
    at java.net.URI.appendSchemeSpecificPart(URI.java:1892)
    at java.net.URI.toString(URI.java:1922)
    at java.net.URI.<init>(URI.java:749)
    at org.apache.hadoop.fs.shell.PathData.stringToUri(PathData.java:565)
    at org.apache.hadoop.fs.shell.PathData.<init>(PathData.java:151)
    at org.apache.hadoop.fs.shell.PathData.getDirectoryContents(PathData.java:273)
    at org.apache.hadoop.fs.shell.Command.recursePath(Command.java:347)
    at org.apache.hadoop.fs.shell.CommandWithDestination.recursePath(CommandWithDestination.java:291)
    at org.apache.hadoop.fs.shell.Command.processPaths(Command.java:308)
    at org.apache.hadoop.fs.shell.Command.processPathArgument(Command.java:278)
    at org.apache.hadoop.fs.shell.CommandWithDestination.processPathArgument(CommandWithDestination.java:243)
    at org.apache.hadoop.fs.shell.Command.processArgument(Command.java:260)
    at org.apache.hadoop.fs.shell.Command.processArguments(Command.java:244)
    at org.apache.hadoop.fs.shell.CommandWithDestination.processArguments(CommandWithDestination.java:220)
    at org.apache.hadoop.fs.shell.CopyCommands$Put.processArguments(CopyCommands.java:267)
    at org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:190)
    at org.apache.hadoop.fs.shell.Command.run(Command.java:154)
    at org.apache.hadoop.fs.FsShell.run(FsShell.java:287)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)

【问题讨论】:

    标签: java hadoop copy out-of-memory heap-memory


    【解决方案1】:

    问题基本上与 Hadoop 客户端有关。这可以通过将“GCOverheadLimit”增加到 4GB 来解决。以下命令解决了我的问题。

    导出 HADOOP_CLIENT_OPTS="-XX:-UseGCOverheadLimit -Xmx4096m"

    【讨论】:

      【解决方案2】:

      尝试为您的 put(或从本地复制)命令提供更多堆空间。 或者,做一个不那么激进的 put 操作。

      即分批复制总数据的一半或 1/4 或 1/5 ....。 所有这些复制都是使用默认的 java 命令从本地计算机完成的,您只是在重载它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-18
        • 2013-08-07
        • 2015-04-15
        • 2019-11-01
        • 1970-01-01
        相关资源
        最近更新 更多