Cloudera设置Sqoop导入会导致Java Heap Space错误并超出GC开销限制

时间:2014-10-21 10:50:02

标签: java hadoop mapreduce garbage-collection cloudera

我已经安装了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堆大小保持为地图的0.8倍并减少内存限制

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

我每百万记录中有1个映射器。

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