我面临与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任务正在将大约400万条记录插入到Teradata中,因此该任务运行时间较长
-插入查询,因为长时间运行会进入Teradata延迟队列(Teradata端的工作负载管理-由DBA设置),因此,squeoop mapreduce任务无法从teradata到600秒
-由于默认任务超时为600秒,因此映射任务中止了事务,导致任务失败
引用:http://apps.teradata.com/TDMO/v08n04/Tech2Tech/TechSupport/RoadRules.aspx
解:
1-在mapreduce结束时增加Taks超时。
2-为特定用户在Teradata端更改与延迟队列有关的配置
关于hadoop - Sqoop导出到Teradata失败,并显示错误-任务尝试无法报告状态600秒钟。杀人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40585558/