Sqoop 导出到 Teradata 失败并出现错误 - 任务尝试未能报告状态 600 秒。杀戮

Sqoop export to Teradata failing with error - Task attempt failed to report status for 600 seconds. Killing

我面临任务尝试失败并出现以下错误,与 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 连接数限制相关的问题吗?

找到问题的根本原因:

-Sqoop 任务正在向 teradata 中插入大约 400 万条记录,因此任务有点长 运行

- 插入查询,因为 long 运行 进入 Teradata delay qeueue(Teradata 端的工作负载管理 - 由 DBA 设置),因此 sqoop mapreduce 任务没有从 teradata [=600 sec.s 获得响应

-由于默认任务超时为 600 秒,事务被映射任务中止,导致任务失败

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

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