SQoop PSQLException"抱歉,已有太多客户"大出口

时间:2014-12-12 15:20:09

标签: postgresql hadoop hdfs sqoop

我看到Sqoop在从HDFS导出大型(2亿多行)表到Postgres时,抛出PSQLException“抱歉,已经有太多客户”了。我有一些似乎工作正常的小桌子(约300万)。

即使大表失败,我似乎仍然在我的postgres表中获得了大约200万行,但我猜这只是来自没有死的工人,因为他们首先得到了一个连接。我的Postgres表配置为允许300 max_connections,并且大约有70个连接始终从其他应用程序处于活动状态,因此SQOOP应该有~230使用。

我尝试在我的SQOOP导出命令中将--num-mappers切换到2-8之间,但这似乎没有太大的区别。在作业跟踪器中查看失败的hadoop作业,在地图阶段显示“Num任务”为3,660,“失败/被杀任务尝试”显示为184/273,如果这有帮助的话

是否有设置最大连接数?还有什么我可以在这做的吗?如果需要,很乐意提供额外的信息。

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的具体情况计算出来。以为我会分享我的发现:

问题的核心是同时运行的同时映射任务的数量。

  • 大型表格同时运行280个地图任务(3,660个 总计)
  • 列表项小表有180个映射任务同时运行(180 总)。

由于这个原因,任务的连接耗尽,因为280中的每一个都会尝试产生一个连接而280 +现有的70是>。 300.所以,我有两个选择:(1)稍微提升postgres max_connection限制,或者(2)减少一次运行的地图任务的数量。

我和(1)一起去了,因为我控制了数据库并将max_connections加载到400并继续生活。

FWIW,看起来(2)可以使用以下内容,但我无法测试它,因为我不控制HDFS集群:

https://hadoop.apache.org/docs/r1.0.4/mapred-default.html

mapred.jobtracker.maxtasks.per.job