Sqoop导出到Teradata失败并显示错误 - 任务尝试无法报告状态600秒。杀

时间:2016-11-14 09:34:50

标签: hadoop teradata cloudera sqoop

我正面临着与Teradata导出(批量插入)作业相关的以下错误失败的任务尝试。
将数据导出到Oracle等的其他作业正常运行。

Task attempt_1234_m_000000_0 failed to report status for 600 seconds. Killing!, java.lang.Throwable: Child Error at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:250) Caused by: ExitCodeException exitCode=255: at org.apache.hadoop.util.Shell.runCommand(Shell.java:543) at org.apache.hadoop.util.Shell.run(Shell.java:460) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:707) at org.apache.hadoop.mapred.LinuxTaskController.createLogDir(LinuxTaskController.java:313) at org.apache.hadoop.mapred.TaskRunner.prepareLogFiles(TaskRunner.java:295) at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:215)

我还可以从任务标准日志中看到以下错误消息:

"main" prio=10 tid=0x00007f8824018800 nid=0x3395 runnable [0x00007f882bffb000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF.read(TDNetworkIOIF.java:693) at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:774)

Hadoop版本:Hadoop 2.5.0-cdh5.3.8

具体来说,如果你能告诉我为什么会出现这个问题,那将会非常有用吗? 这是与Teradata连接数限制有关的问题吗?

1 个答案:

答案 0 :(得分:0)

找到问题的根本原因:

-Sqoop任务是将大约400万条记录插入到teradata中,因此任务有点长时间运行

- 插入查询,因为长时间运行进入Teradata延迟qeueue(Teradata结束时的工作负载管理 - 由DBA设置),因此sqoop mapreduce任务从teradata获得600秒的响应
- 由于默认任务超时为600秒,因此映射任务中止了事务,导致任务失败

参考:http://apps.teradata.com/TDMO/v08n04/Tech2Tech/TechSupport/RoadRules.aspx

解决方案:
1 - 在mapreduce结束时增加Taks超时。
2 - 为特定用户更改与teradata端的延迟队列相关的配置