【问题标题】:Cloudera settings Sqoop import gives Java Heap Space error and GC overhead limit exceededCloudera 设置 Sqoop 导入导致 Java Heap Space 错误并超出 GC 开销限制
【发布时间】:2014-10-21 10:50:02
【问题描述】:

我已经安装了 CDH 最新版本并设置了一个集群,其中包含 1 个 16 GB RAM 和 200 GB 内存的主节点和 3 个 8 GB RAM 和 500 GB 内存的 DataNode。当我尝试运行 Sqoop 导入时,它在完成 83% 的映射后给出 Java 堆空间错误和 GC 开销限制超出错误。我已经尝试了互联网上的所有解决方案。

这是我尝试过的事情的列表:

  1. 我尝试根据此处给出的计算增加容器以及地图的大小并减少内存限制

    http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html

  2. 我尝试将 Java 堆大小保持为 map 的 0.8 倍并减少内存限制

我想知道这背后的可能原因和解决方案。

【问题讨论】:

  • 你运行的守护进程的大小是多少?
  • 哪些守护进程?如果您在 cloudera 管理器中询问 java 堆大小属性,它已设置为大约 820Mb(地图内存的 0.8 倍(即 1 Gib))

标签: java hadoop mapreduce garbage-collection cloudera


【解决方案1】:

我遇到了类似的问题,并通过放置正确的 MySQL/J 连接器 5.1.33 来解决。

mysql 5.1.17 和 Sqoop 4.1.5 版本存在一些问题。

【讨论】:

    【解决方案2】:

    在连接字符串中使用参数 ?dontTrackOpenResources=true&defaultFetchSize=1000&useCursorFetch=true。它可以在不改变 JVM 的情况下工作。

    【讨论】:

      【解决方案3】:

      试试 sqoop 导入 -Dmapreduce.map.memory.mb=6000 -Dmapreduce.map.java.opts=-Xmx1600m -Dmapreduce.task.io.sort.mb=4800

      我给每百万条记录提供了 1 个映射器。

      以上参数需要根据SQOOP拉取成功的数据进行调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-25
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        相关资源
        最近更新 更多