且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Sqoop commit failure

更新时间:2022-10-02 20:29:00

线上一个Sqoop抽取Job报如下错误:

[ERROR]: Utils - Caused by: java.sql.SQLException: Communicationslink failure during commit(). Transaction resolution unknown.
[ERROR]: Utils - at com.mysql.jdbc.Connection.commit(Connection.java:2171)
[ERROR]: Utils - atorg.apache.sqoop.mapreduce.db.DBRecordReader.close(DBRecordReader.java:167)

看报错应该是Sqoop在导出数据后,处理数据到提交超过了MySQLwait_timeout(线上是2分钟);

引起这个的原因会有很多,服务器高负载,HDFS高负载,网卡跑满等等,可以通过在jdbc url里设置interactiveClient=true(线上interactive_timeout1小时)后没有再报过错;

BTW:在写blog的时候想起其实可以尝试一下将fetch-size去掉应该也可以workaround,现在再看当时处问题前一天的日志数据其实MAP其实内存已经满了;

Sqoop commit failure

后续更新:发现在出错的前一天修改过mapred-site.xml,child.opt里的最大内存改成了1G;这样看来fetch-size去掉才是最终解决方案:)结贴



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1299842,如需转载请自行联系原作者