由于任务失败,Sqoop导入需要很长时间

时间:2018-03-06 16:02:26

标签: import timeout sqoop

我们有时会发生一个问题,但反复发生。当我们为特定表运行sqoop import时,有时它会在5分钟内完成。有时需要2.5小时。在这种情况下,我们总是会看到一个失败的地图任务,耗时约2小时10分钟。你能帮忙提供解决方案吗?

1)失败的任务总是失败并出现以下错误。如果预计会发生以下错误,我们是否可以在10-15分钟内完成地图任务,而不是等待2小时。

  

" 2018-03-06 00:09:41,485 ERROR [main] org.apache.sqoop.mapreduce.db.DBRecordReader:顶级异常:   com.microsoft.sqlserver.jdbc.SQLServerException:连接超时(读取失败)       在com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1671)       在com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1658)       在com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1789)       在com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:5031)       在com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:4941)       在com.microsoft.sqlserver.jdbc.TDSReader.ensurePayload(IOBuffer.java:4917)       在com.microsoft.sqlserver.jdbc.TDSReader.readBytes(IOBuffer.java:5210)       在com.microsoft.sqlserver.jdbc.TDSReader.readWrappedBytes(IOBuffer.java:5232)       在com.microsoft.sqlserver.jdbc.TDSReader.readUnsignedShort(IOBuffer.java:5147)"

附加失败任务的日志文件。

请帮助解决方案。

enter image description here

谢谢, 和Sandeep

1 个答案:

答案 0 :(得分:0)

显然修复此错误的来源将是一个更好的解决方案,但是超时的肮脏变通方法应该可以让你安全一段时间。

您可以在使用sqoop时通过在工具名称后面定义它们来指定通用hadoop选项。 例如sqoop import -Dmapred.map.max.attempts --connect ...

在你的情况下,有一些选项可能证明有用,但我想你想要像mapred.task.timeout这样的东西。

mapred.task.timeout: "如果任务既不读取输入,写入输出,也不更新其状态字符串,则终止任务前的毫秒数#34;

有关mapreduce相关属性的完整列表,请查看此处: https://hadoop.apache.org/docs/r1.0.4/mapred-default.html

此处更喜欢hadoop属性:Complete list of property that is used in Hadoop framework

希望这有帮助